2012-06-23 29 views
9

Tengo un UITableView con células estáticas y yo estoy tratando de cambiar la altura de la celda cuando se cumple una condición. Las condiciones se están cumpliendo, pero las alturas de las celdas no cambiarán.Cómo establecer una célula estática UITableView a una altura personalizada?

El código que estoy utilizando es

[self.tableView setRowHeight:10]; 

Y

self.tableView rowHeight = 10; 

Ninguno de estos va a cambiar la altura de la fila de las células ¿Hay otra manera de cambiarlos?

+0

posible duplicado de [altura diferente para celular alternativo en UITableView] (http://stackoverflow.com/questions/3529246/different-height-for-alternative-cell-in-uitableview) – outis

Respuesta

18

que necesita para implementar el siguiente delegado método en el .m de su tableview:

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

Y a continuación, cambiar el valor de customTableCellHeight:

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

Cuando su altura celda de la tabla tiene que cambiar (como cuando los cambios de condición, es necesario llamar a

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

Esto parece estar funcionando, gracias – user1282180

+2

se no necesita la llamada 'reloadData'. –

+2

Es necesario llamar reloadData no dentro heightForRowAtIndexPath, pero fuera de ella, cuando la condición * * cambios. Esto hará que el nuevo cálculo de alturas y permitirá ajuste dinámico del tamaño de las células. – kgiannakakis

0

puede utilizar esto para todo fila de tableview

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