使用presentViewController时未调用viewDidDisappear

时间:2012-03-08 16:41:15

标签: ios xcode uiviewcontroller viewwillappear

我有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];  
}

在第二个视图控制器(SendMsgViewControllerviewDidLoad中,我有以下内容:

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

选择器是UIImageViewPicker

问题是,当我调用方法openSendVC时,会打开一个新控制器,但不会调用viewWillDisappear(第一个viewController)。

1 个答案:

答案 0 :(得分:6)

这是正确的行为。以下摘自UIViewController API docs中的viewWillDisappear:

  

调用此方法以响应从视图层次结构中删除的视图。在实际删除视图之前以及配置任何动画之前调用此方法。

呈现一个新的视图控制器,以便它隐藏另一个视图控制器不计入视图消失 - 实际上只从视图层次结构中删除(例如,使用类似popViewControllerAnimated:)。