我正在做一个游戏,我有这样的视图控制器方案 1(菜单) - > 2(水平选择) - > 3级(与定时器等) - >在死亡或赢得4完成 - >再次2. 我在做什么 我创建了singleton类,它将所有这些视图控制器保存在数组中,并在需要时将它们设置为rootViewControllers。但我有下面的问题:当我退出3并转到4时,我将3设置为nil
,但似乎3仍在工作(定时器正在控制台中打印消息)并且不会被释放。也许我不明白关于viewcontrollers的一些事情,当你将另一个设置为rootViewController时会发生什么?Objective-C切换视图控制器
回答
你真的不应该经常切换rootViewControllers
。大多数情况下,您将一个控制器设置为整个应用程序的根。你应该做的是使用UINavigationController
来管理你的UIViewControllers
。一旦将程序嵌入UINavigationController
中,您只需将其推入导航控制器的堆栈并弹出即可。看看这几个方法:
- (NSArray *)popToRootViewControllerAnimated:(BOOL)animated
- (NSArray *)popToViewController:(UIViewController *)viewController animated:(BOOL)animated
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
同样,您可以通过使用推赛格瑞(从故事板经常初始化(如果你使用一个))
你添加一个视图控制器堆栈可以了解更多有关UINavigationController
这里:http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html
非常感谢!顺便说一句,我可以弹出几个ViewControllers 1 1没有保持对他们的引用?明显的流行,弹出不起作用 – Mathemage 2012-07-26 00:34:16
我不完全确定你的意思是“流行少数”,但如果你想流行到一个特定的VC,那么你只需循环UINavigationController的堆栈,然后使用' - (NSArray * )popToViewController:(UIViewController *)viewController animated:(BOOL)animated'来弹出一个你想要的。这将继续弹出堆栈,直到它达到你想要的。 – Nosrettap 2012-07-26 01:14:02
在你的情况,因为你有很强的借鉴意义,以您的视图控制器(数组中),它的视图将被切换出,但是控制器仍然存在,所以如果你有一个定时器从该控制器开始,它将继续运行。至于定时器,我认为你应该在#3视图控制器的viewDidDisappear方法中使其无效 - 应该处理这个问题。
- 1. 切换视图控制器
- 2. IIViewDeckController切换视图 - 控制
- 3. 在视图控制器之间切换
- 4. 高效切换视图控制器
- 5. UInavigation控制器不工作切换视图控制器到tableviewcontroller
- 6. 切换视图不会切换角度控制器
- 7. 从子视图控制器切换到父视图控制器 - iOS
- 8. 从一个UITableView控制器切换到视图 - 控制
- 9. 多视图控制器的视图之间切换
- 10. 切换子视图控制器使用分段控件
- 11. 从一个视图控制器模式切换到另一个视图控制器后,视图完全黑色
- 12. 如何故事板切换容器视图控制器?
- 13. 切换视图控制器而不创建新实例
- 14. 问题与导航栏切换回根视图控制器
- 15. 使用一个IBAction切换回主视图控制器
- 16. 切换到另一个导航视图控制器
- 17. 在视图控制器之间切换错误
- 18. 从普通视图切换到TabBar控制器
- 19. 如何在两个视图控制器之间切换
- 20. 如何使用PKRevealController切换前视图控制器?
- 21. 在电影播放结束时切换视图控制器?
- 22. 在视图控制器之间随机切换 - 程序崩溃
- 23. 使用代码切换视图控制器
- 24. 如何在iOS中切换视图控制器?
- 25. 在模态视图控制器之间切换
- 26. 以编程方式切换MVC视图控制器 - iOS
- 27. 以编程方式在iPhone视图控制器之间切换
- 28. 切换视图控制器时iOS崩溃
- 29. 切换显示2个不同的视图控制器modaly
- 30. 在控制器之间切换,无法更新视图
我认为标准做法是从NIB中加载一个视图控制器,当它被推入堆栈时 - 除非作为特殊情况,它们通常不会停留在附近...... – nielsbot 2012-07-26 00:07:39