2012-06-23 17 views
9

Ho un UITableView con celle statiche e sto provando a cambiare l'altezza della cella quando incontra una condizione. Le condizioni sono soddisfatte ma le altezze delle celle non cambieranno.Come impostare una cella statica UITableView su un'altezza personalizzata?

Il codice che sto usando è

[self.tableView setRowHeight:10]; 

E

self.tableView rowHeight = 10; 

Nessuno di questi cambierà l'altezza delle righe delle celle C'è un altro modo per cambiare loro?

+0

possibile duplicato di [Altezza diversa per cella alternativa in UITableView] (http://stackoverflow.com/questions/3529246/different-height-for-alternative-cell-in-uitableview) – outis

risposta

18

è necessario implementare il seguente delegato-metodo nella .m del Tableview:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return customTableCellHeight; 
} 

e quindi modificare il valore di customTableCellHeight:

if (condition) { 
    customTableCellHeight = 80; // or whatever 
} 

Quando la tua altezza cella di una tabella ha bisogno di cambiare (come quando cambia la condizione, è necessario chiamare

[self.tableView reloadData]; //This calls heightForRowAtIndexPath for all cells 
+0

Questo sembra funzionare, grazie – user1282180

+2

It non ha bisogno della chiamata 'reloadData'. –

+2

È necessario chiamare reloadData non in heightForRowAtIndexPath, ma al di fuori di esso, quando la condizione * cambia. Ciò causerà il ricalcolo delle altezze e consentirà il dimensionamento dinamico delle celle. – kgiannakakis

0

è possibile utilizzare questo per tutto fila di Tableview

override func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
     return 100 
    } 
Problemi correlati