向导样式导航,关闭视图并显示另一个视图

时间:2009-08-13 17:47:07

标签: iphone

我正在创建一组类似于向导的屏幕,我想知道如何使视图解除其自身及其父视图并立即显示“DoneScreen”而不必担心资源泄漏。我的观点如下:

Base -> Level1 -> DoneScreen
               -> Level2 -> DoneScreen

Level1控制器是使用view.xib创建的导航控制器,并以

显示
[self presentModalViewController ...]

由基本控制器。 Level1控制器还负责创建“DoneScreen”,可以根据特定标准显示“DoneScreen”而不是Level2 Screen。

当用户点击屏幕上的按钮时,Level1控制器实例化Level2控制器并通过

显示它。
[self.navigationController pushViewController ..]

和Level2控制器的视图有一个“下一步”按钮。

当使用点击Level2屏幕中的'Next'按钮时,我需要关闭当前Level2的视图以及Level1的视图并显示'DoneScreen',它将被创建并传递给Level2控制器来自Level1。 (部分是为了减少代码重复,部分是为了在控制器之间分离责任)在Level2控制器中,如果我先显示'DoneScreen'并用

解雇自己
[self.navigationController popViewControllerAnimated:YES];

然后Level1控制器的模态视图仍然存在于'Base'之上但在Done屏幕下。除了Base之外清除所有这些视图然后显示'DoneScreen'的好方法是什么?

有关如何以简单而优雅的方式完成此任务的任何好建议吗?

3 个答案:

答案 0 :(得分:0)

谷歌搜索“iphone向导教程”只产生了one good result。现在看来,制作一个包含所有向导屏幕小部件的长视图可能是个更好的主意。

答案 1 :(得分:0)

您可以考虑在堆栈中抓取您想要的视图,然后创建一个新数组,然后使用导航控制器“viewControllers”属性将它们全部交换出来。

答案 2 :(得分:0)

唉,我的知识深度(或缺乏)导致我使用路径上的所有内容进入单个屏幕,根据状态使用多个视图。不理想,有点麻烦,但它的工作原理。谢谢大家的帮助。