根据文档dismissViewControllerAnimated:completion:
,您只需关闭堆栈底部的控制器即可关闭视图控制器的整个堆栈。当我尝试这个时,只有顶级控制器被解雇。
例如,考虑下图,其中控制器A和B都是模态呈现的。如果我解雇A,那么A和B 应该被解雇,但只有 B被解雇!
以下是用户点击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
属性。有什么想法为什么这不像宣传的那样工作?
答案 0 :(得分:0)
实际上,我发现正确的电话是
[rootViewController dismissViewControllerAnimated:YES completion:^{}];
而不是
[rootViewController.controllerA dismissViewControllerAnimated:YES completion:^{}];
该方法的接收器是底部控制器而不是底部控制器本身的控制器。