2010-10-01 12 views
5

Ho allegato un dump dello schermo per rendere le cose più facili da seguire.iPhone, perché UITableView reloadData non funziona?

Ho collegato i miei punti di uscita per l'origine dati e delegato e ho creato uno sbocco per la mia vista tabella, ma reloadData non funziona?

Idealmente mi piacerebbe solo chiamare reloadData dopo che la vista è stata caricata una volta?

alt text

risposta

6

creare una proprietà per il vostro UITableView e utilizzare la proprietà come la vostra IBOutlet, utilizzando l'ivar direttamente non è il modo per farlo. Collega di nuovo le cose e fai il debug, per vedere se il tuo UITableView non è zero.

Inserire un punto di interruzione nei metodi dell'origine dati UITableView per vedere se vengono richiamati, se lo sono, controllare se il file delle transazioni contiene effettivamente degli elementi.

Se questo non aiuta, dovrai fornire maggiori informazioni come i metodi che vengono chiamati e più codice.

+0

Verificare se la matrice contiene effettivamente dati nuovi/aggiornati quando viene richiamato il reloadData. –

+0

Ho fatto un po 'di debug, l'array è stato aggiornato ma cellForRowAtIndexPath non viene chiamato, al ritorno alla vista. Come ho detto, funziona la prima volta quando viene caricata la vista, ma non dopo. – Jules

+0

Dovrai pubblicare frammenti di codice per darci un'occhiata. –

2

Se la vista principale di UITableViewController è la vista tabella, è possibile evitare l'utilizzo di IBOutlet e utilizzare direttamente la proprietà tableView del controller. In questo modo:

[self.tableView reloadData];

+0

Ok, sono passato a self.tableview, ho lasciato la poperty, l'outlet in atto, ho bisogno di collegare qualcos'altro su IB? anche guardando esempi che ho visto l'origine dati e il delegato non sembrano essere collegati, come mostrato nel dump dello schermo, li ho collegati. – Jules

+0

Guardando di nuovo lo screenshot, vedo che hai un UITableView all'interno di un UIView generico. Ciò potrebbe causare problemi. Ti suggerisco di rendere il controller un UIViewController generico che implementa TableViewDelegates. Il punto di vista dovrebbe essere impostato su UIView principale e (come hai fatto) una presa dovrebbe puntare a UITableView. Imposta di nuovo le uscite di riferimento sul controller e riprova. – MaxFish

+0

Se viene aggiunta la nuova riga, il tableView viene ricaricato, assicurarsi che i dati vengano correttamente modificati dopo la modifica. – MaxFish

Problemi correlati