Метод, названный при увольнении UIViewController?

Существует ли генерал лучшие практики способ быть уведомленным, когда контроллер текущего представления отклоняется (или вытолканный или dismissModalDialog'd)? Я не могу использовать-viewWillDisappear: так как это также называют, когда другой viewController продвинут на текущем.

5
задан Ben Gottlieb 14 March 2010 в 22:42
поделиться

3 ответа

- (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];
}
11
ответ дан 13 December 2019 в 19:24
поделиться

Насколько я знаю, нет автоматического способа получить уведомление, но поскольку UIViewController имеет свойство modalViewController, вы можете определить метод типа "didDismiss...", и вызвать этот метод на предыдущем контроллере модального представления после представления нового контроллера модального представления.

0
ответ дан 13 December 2019 в 19:24
поделиться

Не могли бы вы прояснить свой вопрос?

Я думаю, что вы спрашиваете:

ViewcontrollerONE модально открывает ViewControllerTWO. ViewControllerTWO отклонен. ViewControllerONE хочет знать, что это Этот ViewControllerTWO просто закрыл себя и из-за этого хочет запустить метод XYZ.

У меня нет хорошего ответа, но у меня есть способ:

VC1 просто упоминается в VC2. поэтому VC2 может уведомить VC1 перед увольнением.

0
ответ дан 13 December 2019 в 19:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: