viewDidDisappear не вызывается при использовании presentViewController - PullRequest
7 голосов
/ 08 марта 2012

У меня есть UIViewController с этим методом:

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    NSLog(@"DISAPPEAR");
    lastKnownOrientation = [self interfaceOrientation];
}


-(void)openSendVC{
    SendMsgViewController *vc = [[SendMsgViewController alloc]initWithNibName:@"SendMsgViewController" bundle:nil];
    [self.navigationController pushViewController:vc animated:NO];  
}

Во втором контроллере представления (SendMsgViewController) viewDidLoad У меня есть следующее:

[self presentViewController:picker animated:YES completion:NULL];

гдеВыбор UIImageViewPicker.

Проблема в том, что когда я вызываю метод openSendVC, открывается новый контроллер, но viewWillDisappear (из первого viewController) не вызывается.

1 Ответ

6 голосов
/ 08 марта 2012

Это правильное поведение.Вот выдержка о viewWillDisappear: из документации UIViewController API :

Этот метод вызывается в ответ на удаление представления из иерархии представления.Этот метод вызывается до того, как представление фактически будет удалено, и до того, как будут сконфигурированы какие-либо анимации.

Представление нового контроллера представления таким образом, что он скрывает другой контроллер представления, не считается исчезновением представления - только фактическиудаление из иерархии представления (например, с чем-то вроде popViewControllerAnimated:).

...