我正在制作一组类似于向导的屏幕,我想知道如何使视图自行解除其父视图并立即显示'DoneScreen '而不必担心资源泄漏。我的意见如下所示:向导式导航,解散视图并显示另一个
Base -> Level1 -> DoneScreen
-> Level2 -> DoneScreen
的级别1控制器与一个view.xib创建和显示导航控制器与
[self presentModalViewController ...]
通过对基本控制器。 Level1控制器还负责创建'DoneScreen',它可以根据特定的标准显示而不是Level2屏幕。
当用户点击在屏幕上的按钮时,级别1控制器实例化的级别2控制器和它经由
[self.navigationController pushViewController ..]
和Level2的控制器的视图具有“下一步”按钮显示。
当使用命中Level2屏幕中的'Next'按钮时,我需要关闭当前Level2的视图以及Level1的视图并显示'DoneScreen',它将被创建并传入Level2来自Level1的控制器。 (部分地减少代码重复,并且部分地以分离控制器之间的责任)与
[self.navigationController popViewControllerAnimated:YES];
在级别2的控制器,如果我显示“DoneScreen”的第一和驳回本身则级别1控制器的模态视图仍然存在上述'基地',但在完成屏幕下。除了Base之外,清除所有这些视图并显示“DoneScreen”的好方法是什么?
有关如何以简单而优雅的方式完成此任务的良好建议?
需要注意的是,Level1到DoneScreen部分需要在同一个项目中重复使用,这就是为什么我没有在'单一视图'路线上走完'一切。 – 2009-08-13 17:58:21
我以为我可以在这里使用“责任链”模式,并将“下一个”控制器从Level1传递到Level2。但是,无论我传递给Level2都必须存储,然后在它被popViewControllerAnimated解除之前,我可以显示下一个屏幕 - 问题是这是否会导致某种循环引用/内存泄漏,因为Level2的解除视图会导致它自己的控制器将开始清理,但不会因为'DoneScreen'仍然显示。 – 2009-08-13 18:04:26