Recientemente comencé a programar para el iPhone y estoy creando una aplicación que se conecta a una base de datos y obtiene un conjunto de nombres de fila y los muestra. Cuando se selecciona, el color de fondo de las filas cambia, es decir, puede hacer selecciones múltiples y todas serán de diferentes colores. Por lo tanto, estoy recuperando el XML del servidor sin problemas y he creado un UITableView
para mostrar las celdas. Sin embargo, no tengo idea de cómo agregar las celdas en la tabla. Eché un vistazo al insertRowsAtIndexPaths
, pero no estoy seguro de cómo usarlo. Según tengo entendido, insertRowsAtIndexPaths
toma dos parámetros:Agregar celdas mediante programación a UITableView
Un NSArray que contiene en qué fila se supone que está la celda y en qué sección. El problema con esto es que mi aplicación tendrá un número dinámico de filas. ¿Cómo podría crear NSArray si no sé cuántas filas tendré? ¿Puedo usar NSMutableArray?
El segundo parámetro que toma es una animación, eso es bastante sencillo.
Otro problema que estoy teniendo es ¿dónde realmente creo las células? ¿Cómo pasas las celdas a la vista de tabla?
He intentado leer la documentación, pero simplemente no parece muy claro. Aquí está el código que tengo en estos momentos dentro del método loadView del controlador de vista:
//Before this I get the XML from the server so I am ready to populate
//cells and add them to the table view
NSArray *cells = [NSArray arrayWithObjects:
[NSIndexPath indexPathForRow:0 inSection:0],
[NSIndexPath indexPathForRow:1 inSection:0],
[NSIndexPath indexPathForRow:2 inSection:0],
[NSIndexPath indexPathForRow:3 inSection:0],
[NSIndexPath indexPathForRow:4 inSection:0],
[NSIndexPath indexPathForRow:5 inSection:0],
[NSIndexPath indexPathForRow:6 inSection:0],
[NSIndexPath indexPathForRow:7 inSection:0],
[NSIndexPath indexPathForRow:8 inSection:0],
[NSIndexPath indexPathForRow:9 inSection:0],
[NSIndexPath indexPathForRow:10 inSection:0],
[NSIndexPath indexPathForRow:11 inSection:0],
[NSIndexPath indexPathForRow:12 inSection:0],
nil];
[eventTypesTable beginUpdates];
[eventTypesTable insertRowsAtIndexPaths:cells withRowAnimation:UITableViewRowAnimationNone];
[eventTypesTable endUpdates];
Gracias, veo yo estaba completamente confundido acerca de cómo eso funcionó. He logrado generar las celdas correctamente ahora, pero tengo un problema. Estoy recuperando 12 filas de la base de datos, sin embargo, la pantalla solo se ajusta a 7. Una vez que la pantalla está llena y en el simulador si intento desplazarme hacia abajo obtengo un error en 'NSString * sEventType = [[eventTypes valueForKeyPath: @" name .text "] objectAtIndex: indexPath.row];' dentro del método 'cellForRowAtIndexPath'. ¿Hay algo que este olvidando? Al igual que tengo que agregar un controlador de desplazamiento o algo? Una vez más, ¡gracias por la pronta y útil respuesta! – KerrM
El enlace está roto. Esta es la razón por la que al menos debe publicar un código de muestra en lugar de depender de enlaces externos. El enlace –
está roto, pero puede encontrar el contenido de esta url aquí: http://web.archive.org/web/20150928131750/http://www.iosdevnotes.com/2011/10/uitableview-tutorial/ – Upsilon42