2011-10-24 5 views
1

J'ai un UITableView imbriqué dans un UIScrollView et j'ai du mal à calculer la hauteur de l'un ou de l'autre. Le contenu des deux est dynamique, donc je voudrais que la vue de table s'adapte au contenu de celle-ci, et à son tour la vue de défilement soit agrandie pour s'adapter au contenu de la vue de table.IOS Tableview dans une hauteur de scrollview

Je cela pour la scrollview:

CGFloat scrollViewHeight = 0.0f; 
for (UIView* view in contentView.subviews) 
    { 
     scrollViewHeight += view.frame.size.height; 
    } 

Mais la hauteur résultante est trop long, trop défilement.

La tableview Je trouve plus difficile d'obtenir un redimensionnement dynamique, si je le laisse sans une taille définie, il est trop petit. J'ai donc ajouté ceci:

self.tableView.contentSize = CGSizeMake(320.0f, [self.tableView contentSize].height); 

Et c'est trop grand.

Je pense que la taille de la vue de table est dictée par le nombre et la hauteur des lignes à l'intérieur, mais ne peut pas trouver une réponse claire ici ou sur le net.

Des idées?

+0

Pourquoi utilisez-vous pas directement la scrollview de ta table? – AncAinu

Répondre

0

Votre UITableViewDelegate devrait mettre en œuvre:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

Cela va régler la taille correcte pour votre cellule.

+0

THanks, cela aide à définir la hauteur de la cellule bien, mais la vue de la table est encore trop longue comme le scrollview. Je dois mettre quelque chose de mal quelque part. –

0

J'utilise le code suivant pour définir la hauteur de UIScrollView:

for (UIView* view in scrollview_.subviews) 
{ 
    if (!view.hidden) 
    { 
     CGFloat y = view.frame.origin.y; 
     CGFloat h = view.frame.size.height; 
     if (y + h > scrollViewHeight) 
     { 
      scrollViewHeight = h + y; 
     } 
    } 
} 

[scrollview_ setContentSize:(CGSizeMake(320, scrollViewHeight))]; 

Pour obtenir la hauteur de UITableView, vous pouvez peut-être calculer comme rowheight * rowcount