viewDidAppear Not Firing in Tabbarcontroller > NavigationController > UITableView
-
22-07-2019 - |
Domanda
Al momento ho un controller della barra delle schede impostato con un controller di navigazione su una delle schede, quindi ho un pennino UITableView impostato per quella vista dei controller di navigazione. Tutto questo è stato creato tramite IB e voglio mantenerlo così. Un po 'come questo tutorial http: //twilloapp.blogspot .com / 2009/05 / how-to-incorporare-navigazione-controller.html ora la vista si carica perfettamente quando viene chiamato ViewDidLoad. Ma quando carico quindi ulteriori visualizzazioni tramite il codice IE
MyApp_AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
UINavigationController *nav = (UINavigationController *)delegate.controller.selectedViewController;
newViewController = [[newViewController alloc] initWithNibName:@"newView" bundle:nil];
[nav pushViewController:newViewController animated:YES];
//At this point the view works! and loads
Se provo a tornare indietro con la barra degli strumenti di navigazione, torna alla mia vista precedente
Ora devo aggiornare la vista tabella quando torno ma la chiamata di viewDidAppear
non funziona.
Ho provato ad aggiungere UINavigationDelegate
alla stessa classe ViewController
come tableview e quindi a chiamare - (void) navigationController: (UINavigationController *) navigationController didShowViewController:
Ma non ha funzionato. Ho anche provato ad aggiungere lo stesso delegato del controller della barra delle schede e aggiungere lo stesso navigationController didShowViewController:
lì, ma anche questo non è riuscito.
Come posso aggiornare questa tabella ogni volta che viene caricata la vista?
Soluzione 2
Trovato che mi mancava la dichiarazione del delegato nel file di interfaccia. doh! ho anche provato che in molti posti ha funzionato solo quando l'ho aggiunto alla prima vista di NavigationController (la mia tabella)
Altri suggerimenti
Non dovresti chiamare viewDidAppear
dal tuo codice. Cocoa Touch dovrebbe farlo per te.
Chiama il metodo reloadData
della vista tabella per farlo aggiornare il suo contenuto.