我有3个UIViewContoller
UIViewContollerA
UIViewContollerB
UIViewContollerC
UIViewContollerA
打开UIViewContollerB
presentModalViewController
UIViewContollerB
使用UIViewContollerC
presentModalViewController
我希望只需点击UIViewContollerC
中的按钮即可关闭所有的UIViewController。
我尝试拨打dismissModalViewControllerAnimated
两次但是它不起作用,还有其他选择吗?
这可能吗?
答案 0 :(得分:2)
我会看一下放松赛段。它们允许您放松任何以前的segue。这个问题的答案非常有助于描述如何使用它们:What are Unwind segues for and how do you use them?
同样如迈克尔所述,模态不是设计成一个放在另一个之上。我发现它们非常适合表格,但不是很多。我建议你也使用UINavigation控制器。这将允许您轻松导航回以前的控制器。然后,您还可以将一个用于展开segue的按钮添加回您想要的初始视图控制器。
答案 1 :(得分:0)
你可能需要某种类型的链接调用来备份模态堆栈来执行此操作。
但是,如果您有一堆视图控制器,UINavigationController可能是一个更简单的解决方案,可以首先呈现这些视图控制器并一次性解除它们。
答案 2 :(得分:0)
当然调用dismissModalViewControllerAnimated
不起作用,它打算在不同的视图控制器上调用。来自文档:
取消接收器
提供的视图控制器
因此,您需要在控制器之间设置委派,以便传递请求将控制器向后移至初始控制器。
请记住:
presentViewController
和dismissViewController
代替答案 3 :(得分:0)
你会在UIViewContollerB
中传递UIViewContollerC
的引用,就像这样
@property(nonatomic, assign) UIViewContollerB *refB;
并致电dismissModalViewControllerAnimated
中的UIViewContollerC
将其解雇,并在UIViewContollerB
viewWillDisappear
的解雇行动
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self.refB dismissModalViewControllerAnimated:YES]
}
答案 4 :(得分:-2)
您可以尝试将dismissModalViewControllerAnimated
与animated:NO
一起使用。在最上面的一个和animated:YES
下面的控制器上。
或许它可以工作,如果你只是在rootController上调用dismiss?