Penso che questo sia un caso molto comune come ho visto in diverse app. Ma dopo aver trascorso un paio di giorni, sto ancora lottando con questo. Ho una struttura come la seguente:Come dealloc uiviewcontroller/scaricare viste sull'esecuzione di logout
UITabBarController
-- UINavigationController1
---- UITableViewController1
-- UINavigationController2
---- UITableViewController2
Ora ho un pulsante di disconnessione su UITableViewController2. Quando clicco su quel pulsante di disconnessione, voglio che tutti e tutti i viewcontroller siano deallocati, tutte le viste sono scariche. Fondamentalmente inizia fresco come avviare l'app. Fondamentalmente voglio che viewDidLoad su ognuno di quelli UITableViewController chiamato di nuovo.
Ho provato il seguente metodo per essere chiamato nel mio appdelegate quando viene eseguita l'azione di disconnessione su UITableViewController2.
-(void) logout {
for (UINavigationController* ctrl in self.tabBarController.viewControllers) {
[ctrl popToRootViewControllerAnimated:NO];
ctrl.visibleViewController.view = nil;
}
[self.tabBarController.view removeFromSuperview];
[self.window addSubview:self.tabBarController.view];
}
Ma, ahimè, non sembra funzionare?
Qualche idea su come una cosa del genere viene realizzata? Inoltre vedo comportamenti diversi in iOS4 vs iOS5 con visibleViewController. Non sto usando nessun viewalino modale qui. Qualche trucco?
Update: non sto usando ARC
grazie mbH
Non sono sicuro che funzionerà esattamente per il tuo caso, ma volevo semplicemente "popToRootViewController' al logout, nel qual caso mi piace molto [l'idea di Adam Kemp] (http://forums.xamarin.com/discussion/3749/popviewcontroller-all-the-way-to-main-screen-of-app-rootviewcontroller), che suggerisce di aggiungere un evento 'NSNotificationCenter' per' UserDidLogOut' e gestire quell'evento ** all'interno ** dei tuoi controller di visualizzazione. – cloudrave