我有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)。
答案 0 :(得分:6)
这是正确的行为。以下摘自UIViewController API docs中的viewWillDisappear:
:
调用此方法以响应从视图层次结构中删除的视图。在实际删除视图之前以及配置任何动画之前调用此方法。
呈现一个新的视图控制器,以便它隐藏另一个视图控制器不计入视图消失 - 实际上只从视图层次结构中删除(例如,使用类似popViewControllerAnimated:
)。