使用presentViewController时未调用viewDidDisappear

Kyl*_*_QP 7 xcode uiviewcontroller viewwillappear ios

我有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];  
}
Run Code Online (Sandbox Code Playgroud)

在第二个视图controller(SendMsgViewController)中,viewDidLoad我有以下内容:

[self presentViewController:picker animated:YES completion:NULL];
Run Code Online (Sandbox Code Playgroud)

挑选者是一个UIImageViewPicker.

问题是,当我调用该方法时,openSendVC会打开一个新的控制器,但是viewWillDisappear(第一个viewController)没有被调用.

yuj*_*uji 6

这是正确的行为.以下是关于摘录viewWillDisappear:UIViewController的API文档:

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

呈现新的视图控制器以使其隐藏另一个视图控制器并不算作视图消失 - 实际上仅从视图层次结构中移除(例如,使用类似的东西popViewControllerAnimated:).

  • 但我观察到 viewDidDisappear 在呈现`UIModalPresentationFullScreen` 模态的呈现视图控制器上被调用,但不是在`UIModalPresentationFormSheet` 模态中调用。 (5认同)
  • @Hlung,你应该发布此评论作为答案!谢谢! (2认同)