2012-03-08 2 views
4

У меня есть UIViewController, имеющий этот метод:viewDidDisappear не вызывается при использовании presentViewController

- (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) не вызывается.

ответ

6

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

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

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

+0

Но я наблюдаю, что viewDidDisappear вызывается в представлении контроллера представления, который представляет модальный код UIModalPresentationFullScreen, но не с модальным модулем UIModalPresentationFormSheet. – Hlung

Смежные вопросы