Существует ли генерал лучшие практики способ быть уведомленным, когда контроллер текущего представления отклоняется (или вытолканный или dismissModalDialog'd)? Я не могу использовать-viewWillDisappear: так как это также называют, когда другой viewController продвинут на текущем.
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
[self addObserver:self forKeyPath:@"parentViewController" options:0 context:NULL];
}
return self;
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([@"parentViewController" isEqualToString:keyPath] && object == self) {
if (!self.parentViewController)
NSLog(@"Dismissed");
}
}
- (void)dealloc
{
[self removeObserver:self forKeyPath:@"parentViewController"];
[super dealloc];
}
Насколько я знаю, нет автоматического способа получить уведомление, но поскольку UIViewController имеет свойство modalViewController, вы можете определить метод типа "didDismiss...", и вызвать этот метод на предыдущем контроллере модального представления после представления нового контроллера модального представления.
Не могли бы вы прояснить свой вопрос?
Я думаю, что вы спрашиваете:
ViewcontrollerONE модально открывает ViewControllerTWO. ViewControllerTWO отклонен. ViewControllerONE хочет знать, что это Этот ViewControllerTWO просто закрыл себя и из-за этого хочет запустить метод XYZ.
У меня нет хорошего ответа, но у меня есть способ:
VC1 просто упоминается в VC2. поэтому VC2 может уведомить VC1 перед увольнением.