2009-10-28 13 views
22

estoy fijando la altura de la fila de mi UITableView siguiente código utilizandoiPhone + + UITableView fila altura

[tableView setRowHeight: 100.00]; 

estoy usando una sola línea como separador en el UITableView.

A pesar de establecer la altura anterior, la altura de la fila no cambia.

+0

Importa CUANDO ajuste la altura de la fila – Philip007

Respuesta

65

Debe implementar

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

método delegado. y devuelve 100.0 allí.

+10

cuidado. Pratik no dijo que quería la altura por fila. heightForRowAtIndexPath puede ser costoso con muchas filas. –

+7

Esta es la respuesta correcta aunque costosa: Hay una cosa que no entiendo. ¿Por qué diablos Apple insiste en crear el RowHeight? ¿Por qué no simplemente pedir la altura de fila desde (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath y obtener la altura de eso? –

+12

si todas las celdas tienen la misma altura de fila, establecer rowHeight es mucho más eficiente que usar este método de delegado. – jasongregori

-5

Creo que no es un método tal en UITableView ...

su lugar se puede utilizar la propiedad rowHeight ...
intento, tableView.rowHeight = 100;

+0

Actualmente está en UITableViewDelegate. –

+3

propiedades son simplemente formas más fáciles de acceder a Getters/Setters. haciendo tableView.rowHeight = 100, es exactamente lo mismo que [tableView setRowHeight: 100]. getters/setters se crean automáticamente cuando se sintetizan propiedades. – Sahil

7

La altura de fila se cuece en las celdas cuando se muestran por primera vez.

¿Ha configurado UITableView # rowHeight antes de configurar la fuente de datos?
De lo contrario, hágalo.
Si por algún motivo no puede, su otra opción es llamar a UITableView # reloadData después de establecer el alto de la fila.

+1

Esto lo resolvió para mí. Configuración de rowHeight * antes * Configuré la fuente de datos para solucionar el problema. volver a cargar los datos también. Gracias emp – jasongregori

0

La mejor y más limpia solución es implementar la función de delegado (Tal vez no sea la mejor si su UITableView tiene muchas filas ...).

Además, piensan que son UITableVieCell UIView por lo que podría cambiar su altura en primer lugar ...

Los delegados son muy poderosos en el iPhone dev, aquí la UITableViewDelage:

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

Usted puede también cambiar el indentForRow, displayCellForRow, heightForRow, editar cosas ...

23

Debe evitar el heightForRowAtIndexPath si todas sus filas son de altura similar y use rowHeight propiedad. De acuerdo con la documentación:

Existen implicaciones de rendimiento en el uso de tableView: heightForRowAtIndexPath: en lugar de rowHeight. Cada vez que se muestra una vista de tabla, llama a tableView: heightForRowAtIndexPath: en el delegado para cada una de sus filas, lo que puede dar como resultado un problema de rendimiento significativo con vistas de tabla con un gran número de filas (aproximadamente 1000 o más).

En la subclase UITableViewController se podría hacer, por ejemplo, en el método viewDidAppear (el UITableViewController tiene una referencia a la tableView):

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

¡Un ejemplo sería maravilloso! – Sean

3

me ha gustado esto, aquí tableobj es nada más que UITableView objeto en mi aplicación.

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

O manejarlo de numberOfRowsInSection: como:

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

Debido a establecer el rowHeight antes de establecer la fuente de datos. Funcionó para mí (para alturas de fila iguales).

+0

Funcionó muy bien – Suru

Cuestiones relacionadas