2009-05-31 11 views
5

Sto implementando un'applicazione di gestione note che ha una tabellaView in un tabBar in cui sono visualizzate le informazioni principali delle sue note. Quando si accede a una nota, è possibile modificarne le proprietà. In un pulsante del tabBar puoi scegliere il modo in cui le note vengono visualizzate nella tabellaView.iPhone Dev: Ricarica i dati di una vista tabella da un controller figlio e un altro controller in un TabBar

Il problema che ho è che non so come ricaricare i dati da un controller figlio o dall'altro controller del tabBar, sia. Non so come fare riferimento a TableView da loro in modo da poter utilizzare reloadData per aggiornare le informazioni del TableView da loro.

Sono abbastanza nuovo nello sviluppo di iPhone ... qualsiasi aiuto sarà davvero apprezzato.

risposta

2

il pattern MVC aiuterà qui,

finché si mantiene l'aggiornamento del modello con le informazioni che sono necessarie e il vostro controller stanno aggiornando da quella modale. Mentre scorri indietro tra le viste termina automaticamente l'aggiornamento delle viste.

in questo modo è possibile chiamare i metodi dei dati di ricarica e verranno aggiornati.

[tableviewController.tableview reloadData]; 

è come accedere al messaggio di dati di ricarica.

+2

Grazie, Conosco reloadData e posso utilizzarlo nel file in cui sono presenti i metodi tableView, ma non so come accedere al TableViewController nei controller figlio o altri controller nella tabBar. –

+0

Tranne che questo non funziona da altri ViewControllers ... –

4

Inserisci il codice di aggiornamento della tabella in viewWillAppear: al posto di viewDidLoad: in questo modo, ogni volta che si torna al controller principale dal controller figlio, i dati vengono ricaricati.

+0

Grazie, ma la funzione viewWillAppear non viene chiamata nel mio codice ... sai perché potrebbe accadere? Potrei semplicemente fare un [self.tableView reloaData] all'interno di quella funzione per risolvere il mio problema? –

+0

Sì, dovrebbe aiutare. Ricordate che viewWillAppear è definito come - (void) viewWillAppear: (BOOL) animato Non solo - (void) viewWillAppear –

+0

Funziona, vi ringrazio molto. L'unica cosa che è sbagliata ora è che quando torno dai controller figlio, la riga rimane selezionata a meno che non ne selezioni un'altra. Rimane selezionato anche se clicco sul pulsante di apertura di un'altra riga e torno alla visualizzazione tabella. È strano ... qualche idea su come risolvere questo ?, grazie. –

8

Si consiglia di provare NSNotificationCenter.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(doSomething:) name:@"doSomethingNotification" object:nil]; 

[[NSNotificationCenter defaultCenter] postNotificationName:@"doSomethingNotification" object:nil]; 
0

Sono venuto allo stesso problema mentre si trattava di cellula prototipo. Stranamente ero abbastanza sicuro di aver fatto tutto bene.

Poi ho iniziato a pensare se c'è qualcosa di sbagliato in XCode. Quindi ho ripulito tutto, ho riavviato XCode e si è comunque lamentato.

Infine, ho provato a ripetere le modifiche più recenti allo story board, che aggiunge una classe tableviewcell e l'ho collegato con tutti i miei controlli ui. Alla fine smise di lamentarsi.

Non penso che questo errore sia causato dal tuo codice o qualcosa del genere, sono venuto a diversi strani errori in iOS 5. Destra sta ancora testando e ha molti bug.

In ogni caso, lo storyboard è fantastico e cercherò di abituarmici, disegna la foto più grande della tua app ed è facile gestire la relazione tra le diverse visualizzazioni. Inoltre mi piace molto il suo metodo prepareforsegue.

OK Buona fortuna.