解雇多个模态控制器

时间:2010-02-08 15:02:03

标签: iphone cocoa-touch

在我的iPhone应用程序中,我有两个视图控制器,我想以模态方式呈现。有一个根控制器呈现第一个(比如A),然后A呈现第二个(比如说B)。然后我想立刻解雇A和B,这是通过从根控制器调用dismiss…方法来实现的。文档指出,在这种情况下,整个控制器堆栈都会被解雇,包括A和B.两个控制器确实从屏幕上消失,但是当我检查A时,它的modalViewController属性仍然设置,当我稍后尝试一次更多的是从A呈现B,没有任何反应。我在屏幕上呈现A之前通过在A上调用dismissModalViewControllerAnimated:NO来解决这种情况,但这是一个黑客,而不是真正的解决方案。发生了什么事,我做错了什么?

1 个答案:

答案 0 :(得分:1)

嗯。在这种情况下我没有遇到麻烦。

我使用委托和协议实现了这个,只是一个方法dismissMe:在处理解雇的父级中,以及子级中的一个变量指向父级。当root设置A时,它告诉A root是它的委托; A设置B时同上。

当B完成时,它发送了[delegate dismissMe:self]。 A的解雇:解雇B unanimated,然后发送[代表dismissMe:self]。 Root的解雇:然后驳回了A unanimated。可见效果是B让位给根。

如果需要,我可以从我的git repo中挖掘出来源。当应用程序的工作流程变得更加复杂时,我采用了不同的方案。