替代创建一组模态UIViewControllers?

时间:2011-05-24 15:58:03

标签: iphone uiview uiviewcontroller modal-dialog

我的情况是用户通过一系列“级别”进展。每个级别都有自己的UIViewController。现在,我只是提出下一个级别:

// in level 1 view controller, for example, here's how we go to level 2
[self presentModalViewController:level2VC animated:YES];

这很简单,但很明显它会产生一大堆UIViewControllers。理想情况下,我想做一个很好的视觉过渡(比如交叉溶解)到下一个级别的UIViewController,然后释放最后一个来节省内存,但我认为这会导致不稳定,因为我用这种方法释放父视图控制器。

那么最好的方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:3)

这是为UINavigationController构建的! Class Reference

答案 1 :(得分:1)

UINavigationController是您所描述的UI类型的常用习惯用法。

您可以通过执行:pushViewController:animated:来推送新的视图控制器,这也提供了您正在寻找的过渡效果。

无论如何,请记住,这意味着“导航”:即来回移动。因此,除非您通过隐藏“后退”按钮[self.navigationItem setHidesBackButton:YES animated:YES]来自定义导航栏,否则它不仅仅是向前发展。

此外,所有UIViewController a都保存在内存中(总是),只有在内存条件较低的情况下(-[didReceiveMemoryWarning][1]),“受控”视图才会自动释放,从而恢复内存。如果发生这种情况,您需要确保在用户导航回来时能够再次加载视图。

如果你真的关心内存(尽管我认为这不应该是一个问题),你甚至可以在推送下一个控制器之前考虑“弹出”(即移除)当前控制器。这将持续一个非常“平坦”的控制器层次结构。