2010-07-12 6 views
12

Dans mon application, la tableview a différents types de cellules personnalisées avec différentes hauteurs. Je veux mettre une vue en dessous de cette tableView, pour lequel j'ai besoin de calculer le contenu de la tableVoir la hauteur, comment puis-je le faire?Calculez la table contentSize.height de la table avec des cellules personnalisées de différents types iphone

Plus tôt, j'avais l'habitude de le faire comme: (noOfRows * cell_height), mais c'était pour les hauteurs statiques.

Merci d'avance.

Répondre

0

La meilleure chose que je peux penser serait de mettre votre point de vue tableFooterView

+0

Thanx chrispix .. mais footerView ne helpme atteindre mes exigences. Fondamentalement, j'essaye de rendre la vue de pullToReload sous mon tableview qui devrait être placée au-dessous de tableview, de sorte que chaque fois que le content-offset de viewview contentview soit visible, ceci ne devrait pas être visible, alors que footerView est visible au décalage de fin de tableview contentview. – neha

0

de la table, je pense que ce que vous cherchez est self.view.bounds.size.height.

Découvrez Oliver Drobnik's detailed post on creating a pull-to-reload table view. Dans son cas, c'est plus facile, parce que la vue est en haut, donc il vérifie un contentOffset négatif.

Si vous voulez en bas, vous pouvez vérifier scrollView.contentOffset.y > (self.view.bounds.size.height + pullToReloadViewHeight)

-3

Si vous avez mis vos propres cellules personnalisées, alors vous avez probablement déjà mis en œuvre cette fonction dans votre délégué de table:

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

Parcourez simplement vos lignes, appelez cette fonction pour chacune et résumez le résultat.

+0

N'inclut pas la taille de l'en-tête – malhal

19

UITableView est une sous-classe de UIScrollView, par conséquent, vous pouvez utiliser la méthode d'instance contentSize sur votre tableview:

yourtableView.contentSize.height 

devrait vous donner la hauteur de votre point de vue du contenu tableview

+7

Cela renvoie 0 si vous utilisez des cellules personnalisées avec des hauteurs personnalisées. EDIT: Ceci renvoie la valeur correcte si vous appelez 'TableView.ReloadData()' en premier. :) –

+1

Ce n'est pas suffisant si les cellules ont une hauteur dynamique, car elles sont du même type de cellule, mais leurs hauteurs diffèrent en fonction de la taille de leur contenu – Marmoy

7

Il est vieille question, mais aujourd'hui Je résous mon problème avec ceci

func viewDidLoad(){ 

     super.viewDidLoad() 

     tableView.rowHeight = UITableViewAutomaticDimension 
     tableView.estimatedRowHeight = 44 // >= 2 
    }  


    func getTableViewHeight()->CGFloat{ 

     tableView.reloadData() 
     tableView.layoutIfNeeded() 

     return tableView.contentSize.height + tableView.contentInset.bottom + tableView.contentInset.top 
    } 
+1

'tableView.layoutIfNeeded()' est la clé! – SoftDesigner

4

J'ai la hauteur de calcul dans viewDidLayoutSubviews() pour le contrôleur de vue de contenu. Travailler pour moi (voir les dimensions automatiques des cellules);

0

L'en-tête et pied de page de la section ne sont pas pris en compte dans la hauteur de la table, pensez à ce

CGSize sz = self.table.contentSize; 
sz.height += self.table.contentInset.bottom + 
      self.table.contentInset.top + 
      self.table.numberOfSections * self.table.sectionHeaderHeight; 
Questions connexes