Ho un po 'di codice da pulire nel mio viewWillDisappear:
, che voglio usare solo quando la vista sta tornando al controllore della vista genitore.isBeingDismissed non impostato in viewWillDisappear:
- (void)viewWillDisappear:(BOOL)animated
{
if ([self isMovingFromParentViewController] || [self isBeingDismissed]) {
NSLog(@"isMovingFromParentViewController or isBeingDismissed");
// clean up
}
[super viewWillDisappear:animated];
}
La vista può essere presentato in due modi: può essere spinto da un controller di navigazione, o presentato come un controller di vista modale (dallo stesso controller di navigazione). Se viene premuto, quindi fatto scoppiare (premendo il pulsante Indietro), il mio codice di pulizia viene eseguito. Se è presentato come un controller di visualizzazione modale, quindi rimosso, il codice non viene eseguito.
mi respingere in questo modo:
[rootViewController dismissModalViewControllerAnimated:YES];
La mia domanda è: perché non è isBeingDismissed
set quando ho respingere il controller della vista?
Posso confermare che 'isBeingDismissed() 'restituisce' false' quando il viewController è presumibilmente spuntato da un 'UINavigationController', come il dettaglio viewController in un' UISplitViewController' compresso. – bio