iPhone + UITableView + hauteur de la ligne
-
06-07-2019 - |
Question
Je règle la hauteur de ligne de mon UITableView
à l'aide du code suivant
[tableView setRowHeight: 100.00];
J'utilise la seule ligne comme séparateur dans UITableView
.
Bien que définir la hauteur au-dessus, la hauteur de la ligne ne soit pas modifiée.
La solution
Vous devez implémenter
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
méthode déléguée. et retourner 100.0 là-bas.
Autres conseils
Vous devez éviter le heightForRowAtIndexPath
si toutes vos lignes ont une hauteur similaire et utiliser la propriété rowHeight
. Selon la documentation:
L'utilisation de tableView: heightForRowAtIndexPath: au lieu de rowHeight a des conséquences sur les performances. Chaque fois qu’une vue tabulaire est affichée, elle appelle tableView: heightForRowAtIndexPath: dans le délégué de chacune de ses lignes, ce qui peut entraîner des problèmes de performances significatifs lorsque les vues tabulaires comportent 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
fait référence au tableView):
self.tableView.rowHeight = 79.f;
La hauteur de la ligne est enregistrée dans les cellules lors de leur affichage initial.
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 la ligne.
J'ai fait comme ça, ici tableobj
n'est rien d'autre qu'un objet UITableView
dans mon application.
- (void)viewDidLoad
{
[super viewDidLoad];
[tableObj setRowHeight:100.0f];
}
Ou manipulez-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ées égales).
La solution meilleure et plus propre consiste à implémenter la fonction de délégué (ce n'est peut-être pas la meilleure si votre UITableView comporte plusieurs lignes ...).
Pensez également que UITableVieCell est UIView pour pouvoir changer sa hauteur d’abord ...
Les délégués sont très puissants dans l’iPhone dev, ici le UITableViewDelage:
Vous pouvez également modifier l'indentForRow, displayCellForRow, heightForRow, modifier des éléments .....
Je ne pense pas qu'il existe une telle méthode dans UITableView ...
À la place, vous pouvez utiliser la propriété rowHeight ...
Essayer,
tableView.rowHeight = 100;