【问题标题】:dismissing a stack of view controllers解除一堆视图控制器
【发布时间】:2014-04-27 22:07:52
【问题描述】:

根据文档dismissViewControllerAnimated:completion: 将允许您通过仅解除堆栈底部的控制器来解除整个视图控制器堆栈。当我尝试这个时,只有顶级控制器被解雇。

例如,考虑下图,其中控制器 A 和 B 都以模态方式呈现。如果我解雇 A,那么 A 和 B 都应该被解雇,但 只有 B 被解雇!

下面是当用户点击 B 的按钮时触发的动作。根视图控制器解除 A(其呈现的控制器),但只有 B 被解除!!

- (IBAction)dissmissAandB:(id)sender {
    AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
    ViewController *rootViewController = 
         (ViewController *) appDelegate.window.rootViewController;
    [rootViewController.controllerA dismissViewControllerAnimated:YES completion:^{}];Below
}

根视图控制器的 controllerA 属性在第一个 segue 准备好时设置(即,当 A 出现时)。任何想法为什么这不像宣传的那样工作?

【问题讨论】:

标签: ios uiviewcontroller


【解决方案1】:

其实我发现正确的调用是

[rootViewController dismissViewControllerAnimated:YES completion:^{}];

而不是

[rootViewController.controllerA dismissViewControllerAnimated:YES completion:^{}];

方法的接收者是呈现底层控制器的控制器而不是底层控制器本身。

【讨论】:

    猜你喜欢
    • 2018-01-01
    • 1970-01-01
    • 2017-02-27
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    相关资源
    最近更新 更多