【问题标题】:presentViewController and viewDidAppear not getting called in iOS5.1/6在 iOS5.1/6 中没有调用 presentViewController 和 viewDidAppear
【发布时间】:2013-01-11 09:02:14
【问题描述】:

我在父视图控制器 A 中有一个视图控制器 B。两个视图同时显示。

在视图控制器 B 中,我尝试使用以下方法呈现一个新的视图控制器:

- (void) buttonClicked:(id)sender
{
    MyViewcontroller *vc = [[MyViewcontroller alloc] init];
    [self presentViewController:vc animated:YES completion:nil];
}

视图控制器在 iOS6 中正确显示,我使用以下方法关闭 MyViewController

- (IBAction)backButtonPressed:(id)sender {
    [self dismissViewControllerAnimated:YES completion:nil];
}

但是 iOS 5.1 和 iOS 6 是有区别的。

QN1:关闭后,视图控制器 A 和 B viewDidAppear 不会被调用。它应该被触发吗?

QN2:我无法让MyViewController 出现在 iOS 5.1.1 中。除非我将视图控制器 B 作为子容器添加到 A:

[self addChildViewController:vcB];
[self.view addSubview:vcB.view];

通过添加子控制器,我可以让MyViewController 显示和视图控制器 A&B viewDidAppear 将在它被关闭时被调用。 viewDidAppear 在使用 iOS6 时也会被调用。

我不确定这里发生了什么。

【问题讨论】:

    标签: ios uiviewcontroller viewdidappear


    【解决方案1】:

    答案 1:当您关闭模式视图时,不会调用 viewDidAppear

    答案 2:如果您从“View-controller B”呈现“MyViewController”,那么视图控制器 B 的视图应该在视图层次结构中。

    从这里您可以获得更多信息。 How to Presenting View Controllers from Other View Controllers

    【讨论】:

    • 对于#2,我做了一个po [[UIWindow keyWindow] recursiveDescription],视图层次结构对我来说看起来很正常。 UIWindow -> UIView(视图控制器 A)-> UIView(视图控制器 B)-> UIButton。我不知道在哪里看?
    • 我还应该提到,这是没有 [self addChildViewController:vcB];,其中 self = 视图控制器 A。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-12
    • 2012-07-16
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 2011-04-03
    • 2014-05-26
    相关资源
    最近更新 更多