解雇一堆视图控制器

时间:2014-03-20 19:45:37

标签: ios uiviewcontroller

根据文档dismissViewControllerAnimated:completion:,您只需关闭堆栈底部的控制器即可关闭视图控制器的整个堆栈。当我尝试这个时,只有顶级控制器被解雇。

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

enter image description here

以下是用户点击B&#39s按钮时触发的操作。根视图控制器解除A(其呈现的控制器),但只有B被解雇!!

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

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

1 个答案:

答案 0 :(得分:0)

实际上,我发现正确的电话是

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

而不是

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

该方法的接收器是底部控制器而不是底部控制器本身的控制器。