2009-10-28 14 views
22

Je suis en train de la hauteur de la ligne de mon UITableView en utilisant le code suivantiPhone + UITableView + hauteur de ligne

[tableView setRowHeight: 100.00]; 

J'utilise la seule ligne comme séparateur dans le UITableView.

Même si vous réglez la hauteur au-dessus, la hauteur de la rangée ne change pas.

+0

Cela compte QUAND vous définissez la hauteur de ligne – Philip007

Répondre

65

Vous devez implémenter

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

méthode déléguée. et retourner 100.0 là.

+10

Attention. Pratik n'a pas dit qu'il voulait la hauteur par rangée. heightForRowAtIndexPath peut être coûteux avec beaucoup de lignes. –

+7

Ceci est la bonne réponse si cher: Il y a une chose que je ne comprends pas. Pourquoi diable Apple insiste-t-elle sur le RowHeight? Pourquoi ne pas simplement demander la hauteur de ligne à partir de (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath et obtenir la hauteur de cela? –

+12

Si toutes les cellules ont la même hauteur de ligne, la définition de rowHeight est beaucoup plus efficace que l'utilisation de cette méthode de délégation. – jasongregori

-5

Je ne pense pas qu'il ya une telle méthode UITableView ...

Au lieu de cela, vous pouvez utiliser la rowHeight propriété ...
Essayez, tableView.rowHeight = 100;

+0

En fait, c'est dans UITableViewDelegate. –

+3

propriétés sont simplement des moyens plus faciles d'accéder à Getters/Setters. faire tableView.rowHeight = 100, est exactement le même que [tableView setRowHeight: 100]. Les getters/setters sont automatiquement créés lorsque vous synthétisez des propriétés. – Sahil

7

La hauteur de ligne est cuite dans les cellules lors de leur première visualisation.

Avez-vous défini UITableView # rowHeight avant de définir la source de données?
Sinon, faites-le.
Si, pour une raison quelconque, vous ne pouvez pas, votre autre option consiste à appeler UITableView # reloadData après avoir défini la hauteur de ligne.

+1

Cela a résolu pour moi. Définition rowHeight * avant * J'ai défini la source de données totalement résolu le problème. rechargement des données a également fait. Merci emp. – jasongregori

0

La solution la meilleure et la plus propre est d'implémenter la fonction déléguée (peut-être pas la meilleure si votre UITableView a beaucoup de lignes ...).

De plus, pensent que UITableVieCell sont UIView pour que vous puissiez changer leur hauteur ... d'une part

Les délégués sont très puissants en dev iPhone, voici le UITableViewDelage:

http://developer.apple.com/iphone/library/documentation/uikit/reference/UITableViewDelegate_Protocol/Reference/Reference.html

Vous pouvez également changer l'indentForRow, displayCellForRow, heightForRow, éditer des trucs .....

23

Vous devriez éviter le heightForRowAtIndexPath si toutes vos lignes sont de taille similaire et utilisez le rowHeight propriété. Selon la documentation:

L'utilisation de tableView comporte des implications en termes de performances: heightForRowAtIndexPath: au lieu de rowHeight. Chaque fois qu'une vue de table est affichée, elle appelle tableView: heightForRowAtIndexPath: sur le délégué pour chacune de ses lignes, ce qui peut entraîner un problème de performance important avec les vues de table ayant un grand nombre de lignes (environ 1000 ou plus).

Dans la sous-classe UITableViewController cela pourrait se faire, par exemple, dans la méthode viewDidAppear (le UITableViewController a une référence à la tableView):

self.tableView.rowHeight = 79.f; 
+0

Un exemple serait merveilleux! – Sean

3

Je ne comme ça, ici tableobj est rien UITableView objet dans mon application.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [tableObj setRowHeight:100.0f]; 
} 

ou de le manipuler dans numberOfRowsInSection: comme:

- (NSInteger)tableView:(UITableView *)tblView numberOfRowsInSection:(NSInteger)section { 
    [tableObj setRowHeight:100.0f]; 
    return [soandso count]; // soandso is my object 
} 

Parce que régler la rowHeight avant de la source de données. Cela a fonctionné pour moi (à des hauteurs de rangée égales).

+0

Cela a très bien fonctionné – Suru