级联模态视图

时间:2009-04-09 15:03:28

标签: iphone

我正在尝试做什么:

  1. 显示模态视图,我获得一些用户输入
  2. 显示另一个并获得更多输入
  3. 使用1.和2的输入做一些事情。
  4. 问题是:presentModalViewController:animated:非阻止。这意味着我不能只做步骤1.-3。顺序。

    我是如何解决的:

    ViewController0构建了ViewController1并给了他一个自己的引用,然后是presentModalViewController:animated:。 ViewController1将收集用户输入,然后在ViewController0上调用一个方法(它有引用)。该方法将构建ViewController2并执行与第一个相同的操作。 ViewController2还将调用ViewController0上的方法(甚至可能是同一个方法)。现在,ViewController0拥有所有数据(或应该),并可以继续执行第3步。

    这种方法存在问题:

    1. 它看起来像一个可怕的黑客( 是更好的方法)。
    2. 不起作用。 :-)问题是当ViewController0试图显示ViewController2时。那个甚至不会显示出来。我的假设(我是iPhone新编程,但之前我做过一些Windows编程)是这个操作没有立即完成,而是发布到某处进行进一步处理(类似于WIN32 msg队列),所以它会以某种方式与删除ViewController1的操作!
    3. 那么,任何想法如何以更简单的方式解决这个问题或让它以这种方式工作?

3 个答案:

答案 0 :(得分:1)

您是否尝试过从ViewController1调用[self presentModalViewController:ViewController2]

我问,因为我知道这种方法有效,从VC0启动了一个模态视图控制器:

[self.navigationController presentModalViewController:VC1]

然后在VC1的某一点上,如上所述。第二个模态视图作为叠加层出现,当被解雇时,您将返回VC1。

答案 1 :(得分:1)

我在这里找到了解决这个问题的方法:http://forums.macrumors.com/showthread.php?t=513131(lawicko的回答)。

感谢您的回复。

答案 2 :(得分:0)

您可能希望将其设为单个模态视图控制器,而不是包含2个子控制器。主模式视图控制器可以是UINavigationController,以便第二个子控制器被推送到导航堆栈,或者您可以使它成为普通视图控制器,只是以编程方式交换子控制器的视图。

你尝试这样做的方式应该有效,但可能会觉得有点笨拙。确保在呈现第二个模态视图控制器之前解除它。