iPhone + UITableView + altezza riga
-
06-07-2019 - |
Domanda
Sto impostando l'altezza della riga del mio UITableView
utilizzando il seguente codice
[tableView setRowHeight: 100.00];
Sto usando la riga singola come separatore in UITableView
.
Nonostante l'impostazione dell'altezza sopra, l'altezza della riga non viene modificata.
Soluzione
Dovresti implementare
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
metodo delegato. e restituisci 100.0 lì.
Altri suggerimenti
Dovresti evitare heightForRowAtIndexPath
se tutte le tue righe hanno un'altezza simile e utilizzare la proprietà rowHeight
. Secondo la documentazione:
Ci sono implicazioni sulle prestazioni nell'uso di tableView: heightForRowAtIndexPath: invece di rowHeight. Ogni volta che viene visualizzata una vista tabella, chiama tableView: heightForRowAtIndexPath: sul delegato per ciascuna delle sue righe, il che può comportare un problema di prestazioni significative con le viste tabella con un numero elevato di righe (circa 1000 o più).
Nella sottoclasse UITableViewController potrebbe essere eseguito, ad esempio, nel metodo viewDidAppear
(il UITableViewController
ha un riferimento a tableView):
self.tableView.rowHeight = 79.f;
L'altezza della riga viene inserita nelle celle quando vengono visualizzate per la prima volta.
Hai impostato UITableView # rowHeight prima di impostare l'origine dati?
In caso contrario, fallo.
Se per qualsiasi motivo non riesci, l'altra opzione è quella di chiamare UITableView # reloadData dopo aver impostato l'altezza della riga.
Mi è piaciuto, qui tableobj
non è altro che l'oggetto UITableView
nella mia applicazione.
- (void)viewDidLoad
{
[super viewDidLoad];
[tableObj setRowHeight:100.0f];
}
O gestiscilo in numberOfRowsInSection:
come:
- (NSInteger)tableView:(UITableView *)tblView numberOfRowsInSection:(NSInteger)section {
[tableObj setRowHeight:100.0f];
return [soandso count]; // soandso is my object
}
Perché impostare rowHeight
prima di impostare l'origine dati. Ha funzionato per me (per altezze uguali).
La soluzione migliore e più pulita è implementare la funzione di delega (forse non la migliore se UITableView ha molte righe ...).
Inoltre, pensa che UITableVieCell sia UIView in modo da poter prima cambiare l'altezza ...
I delegati sono molto potenti negli sviluppatori iPhone, qui UITableViewDelage:
Puoi anche cambiare indentForRow, displayCellForRow, heightForRow, modificare roba .....
Non credo che esista un metodo simile in UITableView ...
Invece puoi usare la proprietà rowHeight ...
Provare,
tableView.rowHeight = 100;