9

我有一个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)。

4

1 回答 1

8

这是正确的行为。viewWillDisappear:这是UIViewController API 文档的摘录:

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

呈现一个新的视图控制器以使其隐藏另一个视图控制器并不能算作视图消失——只有实际从视图层次结构中删除才会这样做(例如,使用类似的东西popViewControllerAnimated:)。

于 2012-03-08T16:51:17.830 回答