【问题标题】:viewDidDisappear not called when use presentViewController使用 presentViewController 时未调用 viewDidDisappear
【发布时间】:2012-03-26 03:41:12
【问题描述】:

我有一个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 方法时,会打开一个新控制器,但不会调用(第一个 viewController 的)viewWillDisappear

【问题讨论】:

    标签: ios xcode uiviewcontroller viewwillappear


    【解决方案1】:

    这是正确的行为。以下是来自UIViewController API docs 的关于viewWillDisappear: 的摘录:

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

    呈现一个新的视图控制器以隐藏另一个视图控制器并不能算作视图消失了——只有真正从视图层次结构中删除才会发生(例如,使用popViewControllerAnimated: 之类的东西)。

    【讨论】:

    • 但我观察到 viewDidDisappear 在呈现 UIModalPresentationFullScreen 模态的呈现视图控制器上被调用,而不是 UIModalPresentationFormSheet 模态。
    • @Hlung,您应该发布此评论作为答案!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多