2009-10-28 14 views
22

io pongo l'altezza della riga della mia UITableView usando seguente codiceiPhone + UITableView + fila altezza

[tableView setRowHeight: 100.00]; 

Sto usando la linea unica come separatore nella UITableView.

Se si imposta l'altezza sopra, l'altezza della riga non viene modificata.

+0

È importante QUANDO si imposta l'altezza della riga – Philip007

risposta

65

Si dovrebbe implementare

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

metodo delegato. e restituisci 100.0 lì.

+10

Attenzione. Pratik non ha detto di volere altezza per fila. heightForRowAtIndexPath può essere costoso con un sacco di righe. –

+7

Questa è la risposta giusta, anche se costosa: c'è una cosa che non capisco. Perché diavolo Apple insiste nel trombare RowHeight? Perché non chiedere semplicemente l'altezza della riga da (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath e ottieni l'altezza da questo? –

+12

se tutte le celle hanno la stessa altezza di riga, l'impostazione di rowHeight è molto più efficiente rispetto all'utilizzo di questo metodo delegato. – jasongregori

-5

Io non credo che ci sia un tale metodo in UITableView ...

Invece è possibile utilizzare la proprietà rowHeight ...
prova, tableView.rowHeight = 100;

+0

In realtà è in UITableViewDelegate. Le proprietà –

+3

sono solo modi più semplici per accedere a Getter/Setter. doing tableView.rowHeight = 100, è esattamente lo stesso di [tableView setRowHeight: 100]. I getter/setter vengono creati automaticamente quando si sintetizzano le proprietà. – Sahil

7

L'altezza della riga viene infornata nelle celle quando vengono visualizzate per la prima volta.

Hai impostato UITableView # rowHeight prima di impostare l'origine dati?
In caso contrario, farlo.
Se per qualsiasi motivo non è possibile, l'altra opzione è chiamare UITableView # reloadData dopo aver impostato l'altezza della riga.

+1

Questo l'ha risolto per me. Impostazione rowHeight * prima * I set dell'origine dati ha risolto completamente il problema. ha ricaricato anche i dati. Grazie emp. – jasongregori

0

La soluzione migliore e più pulita è implementare la funzione di delegato (forse non la migliore se UITableView ha molte righe ...).

Inoltre, credo che UITableVieCell sono UIView così si potrebbe cambiare la loro altezza in primo luogo ...

I delegati sono molto potenti in iPhone Dev, qui l'UITableViewDelage:

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

si può anche cambiare theindentForRow, displayCellForRow, heightForRow, edit stuff .....

23

Si dovrebbe evitare lo heightForRowAtIndexPath se tutte le file hanno un'altezza simile e utilizzare rowHeight proprietà. Secondo la documentazione:

Ci sono implicazioni di prestazioni nell'utilizzo 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 significativo problema di prestazioni con visualizzazioni di tabella con un numero elevato di righe (circa 1000 o più).

nella sottoclasse UITableViewController potrebbe essere fatto, per esempio, nel metodo viewDidAppear (il UITableViewController ha un riferimento alla tableView):

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

Un esempio sarebbe meraviglioso! – Sean

3

ho fatto come questo, qui tableobj è altro che UITableView oggetto nella mia applicazione.

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

O gestire in numberOfRowsInSection: come:

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

Perché impostare il rowHeight prima di impostare l'origine dei dati. Ha funzionato per me (per altezze di riga uguali).

+0

Ha funzionato molto bene – Suru

Problemi correlati