iphone - example - uitableview swift 4 programmatically
¿Hay alguna forma mejor de determinar el tamaño correcto para una UITableViewCell? (3)
Parecerá tonto, pero ... uh ... "diseña tu celda antes de salir de heightForRowAtIndexPath";)
En serio, el sistema operativo solo llama a esto si va a ser necesario (como en: se trata de crear la celda y mostrarla en la pantalla), por lo que instalarla y prepararla para mostrarla no es un esfuerzo desperdiciado.
Tenga en cuenta que no tiene que hacer su diseño por separado, lógicamente. Simplemente haga una llamada a su [self prepLayoutForCellAtIndex: index] dentro de su rutina heightForRowAtIndexPath.
Si los datos son estáticos, puede crear una tabla de altura y almacenar en caché la información.
if (0 == heightTable[index]) {
heightTable[index] = [self prepLayoutForCellAtIndex:index];
}
return (heightTable[index]);
Diablos, incluso si los datos cambian, puede volver a calcular el valor de la tabla en el método que cambia los datos, o borrar a 0 para que se vuelva a calcular la próxima vez que sea necesario.
Tengo una celda UITableView que tendrá un tamaño variable dependiendo de su contenido (posiblemente varias líneas de texto).
Como parece que se llama a heightForRowAtIndexPath antes de diseñar la celda, solo adivino la altura correcta llamando a [NSString sizeWithFont] en mi cadena de texto. ¿Hay una mejor manera de establecer la altura después de que haya distribuido el texto en la celda y tener una idea de qué tamaño debería ser exactamente?
Si mira SMS.app como ejemplo, Apple guarda el alto de fila de la celda en la base de datos sqlite de SMS.app.
Uso lo siguiente, por lo general:
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath {
UITableViewCell *cell = [self tableView: tableView cellForRowAtIndexPath: indexPath];
return cell.bounds.size.height;
}
Tenga en cuenta que utilizo esto para las tablas en las que precaché un montón de filas antes de tiempo, no para aquellas que tienen MUCHAS celdas. Sin embargo, para cosas como las tablas de Configuración, donde hay solo unas pocas filas, pero muy probablemente de diferente tamaño, funciona bien. Para tablas más grandes, hago algo en la línea de lo que sugirió Olie.