2011-02-23 12 views
26

estoy haciendo una aplicación basada en la navegación para iphone.UITableView recargar datos

uno de mis controladores de vista se parece a esto:

@interface NewComputerViewController : UIViewController <UITableViewDelegate, UITableViewDataSource> 

así que estoy usando un UITableView para mostrar los datos.

cuando se carga la vista, utilizo un botón en la barra de navegación superior para ejecutar una función loadStuff cargar algunas cosas en un diccionario.

Mi pregunta: ¿cómo repoblar la vista de tabla en la que viewcontroller de ese loadStuff función (que pertenece a la vista controlador)

Respuesta

53

¡Siempre puede usar el método [tableView reloadData]!

Pero si tiene algunos datos almacenados localmente y cargar cosas nuevas de algún servidor, entonces puede ir para:

[tableView beginUpdates]; 
[tableView insertRowsAtIndexPaths:*arrayOfIndexPaths* withRowAnimation:*rowAnimation*]; 
[tableView endUpdates]; 

Y si se quiere eliminar fila existente puede utilizar

[tableView beginUpdates]; 
[tableView deleteRowsAtIndexPaths:*arrayOfIndexPaths* withRowAnimation:*rowAnimation*]; 
[tableView endUpdates]; 
+0

cuál será array de rutas de índice Estoy usando mutabledictionary para datos de tabla y quiero eliminar un objeto del diccionario y actualizar tableview – pravin

25

Intente utilizar [tableView reloadData]; (donde tableView es el nombre de la variable de instancia)

+23

I loled en su nombre de usuario ^^ – Emil

+3

@Emil: Sólo espero que nadie lo intenta algún día. ;) –

+0

No pasará nada en la mayoría de las máquinas, sin embargo, casi todos los sistemas operativos tienen un bloque ahora ... Una lástima, sin embargo: P – Emil

3

al final de su función loadstuff vuelva a cargar el contenido de su tabla escribiendo el siguiente código:

[tableView reloadData]; 
5

Incluso recargar ...

[tableView reloadData]; 

no se recargue la filas/celda editada,]. Compruebe que IBOutlet de tableView no está conectado en el archivo XIB.

Esta podría ser una de las razones.

4

Es muy importante el hecho de que debe asegurarse de que la fuente de su tabla refleja también sus cambios.

Cuando, por ejemplo, elimina algo, [tableView reloadData] no hará nada cuando no elimine primero el elemento en su fuente.

Tuve este problema en la siguiente situación: Tenía una tabla que mostraba algunos archivos en la carpeta de mi documento. Luego quise eliminar algunos archivos y los eliminé en la carpeta documentos, pero aún aparecen en mi lista. Intenté [tableView reloadData] y todas las otras respuestas sugeridas en esta publicación, pero todavía estaban los archivos en la lista. Cuando cerré la tabla vista y la abrí de nuevo, la lista estaba bien. ¿Por qué? Bueno, porque llené un NSArray con todos mis archivos -> esta es mi "fuente" para el tableView. Así que cuando elimino un archivo, no solo necesito eliminar el archivo en la carpeta de documentos, también necesito eliminarlo de la matriz. -> Así que hice un NSMutableArray para tener la capacidad de eliminarlo. Luego llame a [tableView reloadData] y la lista está bien. ;-)

0

[tableView reloadData]; donde tableview es el nombre de su UITableView

2

Asegúrese de que está configurando datasource y Delegado de tableView.

tableView.delegate = self; 
tableView.dataSource = self; 

Asegúrese de que el método adecuado de delegado y origen de datos esté implementado en el controlador.

En el método loadStuff, llame a:

[tableView reloadData]; 

en Swift, la misma:

tableView.delegate = self 
tableView.dataSource = self 
tableView.reloadData()