web-dev-qa-db-fra.com

iPhone + UITableView + hauteur de ligne

Je suis en train de définir la hauteur de ligne de mon UITableView en utilisant le code suivant

[tableView setRowHeight: 100.00];

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

Même si la hauteur est définie au-dessus, la hauteur de la ligne ne change pas.

22
pratik

Vous devez mettre en œuvre

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

déléguer la méthode. et renvoyez 100,0 là-bas.

65
Morion

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

L'utilisation de tableView: heightForRowAtIndexPath: au lieu de rowHeight a des implications sur les performances. 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 performances significatif avec les vues de table ayant un grand nombre de lignes (environ 1000 ou plus).

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

self.tableView.rowHeight = 79.f;
23
jokkedk

La hauteur de ligne est intégrée dans les cellules lors de leur premier affichage.

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 est d'appeler UITableView # reloadData après avoir défini la hauteur de ligne.

7
emp

J'ai fait comme ça, ici tableobj n'est rien d'autre que UITableView objet dans mon application.

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

Ou gérez-le dans numberOfRowsInSection: comme:

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

Parce que définissez le rowHeight avant de définir la source de données. Cela a fonctionné pour moi (pour des hauteurs de rang égales).

3
Mallikarjun

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

Pensez également que UITableVieCell sont UIView afin que vous puissiez d'abord changer leur hauteur ...

Les délégués sont très puissants dans le développement iPhone, ici le UITableViewDelage:

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

Vous pouvez également modifier indentForRow, displayCellForRow, heightForRow, éditer des éléments .....

0
eBuildy