高效地在视图控制器之间切换
Posted
技术标签:
【中文标题】高效地在视图控制器之间切换【英文标题】:Switching Between View Controllers Efficiently 【发布时间】:2012-01-19 00:27:08 【问题描述】:为了在我的 ios 应用程序中切换视图,我一直在使用模态视图控制器。它工作正常,但这是不好的编码习惯吗?会不会对我的应用程序的内存使用造成不利影响?
响应 cmets 询问更多信息,我正在切换的视图是正常的信息视图。我正在使用三个视图来浏览我的应用程序:
主视图:具有导航到特定信息视图的按钮 信息视图:具有导航到特定网页以获取信息的按钮 Web 视图:通过 UIWebview 显示信息我在顶部有一个临时导航栏,用于在主页上导航“返回”和“主页”。
总的来说,这是一个网络应用程序,其结构在其他视图中提供菜单。我不想透露它具体做了什么(这是我的想法),但是这应该是足够的信息了。
我目前正在这样的视图之间切换:
newViewController *newView = [[newViewController alloc] init];
[self presentModalViewController:newView animated:YES];
根据目前的答案,模态视图旨在快速和临时显示动画,但我正在寻找一种更持久的方法。
有没有更好的方法?请在您的回复中提供示例代码。谢谢!
编辑:我很抱歉最初没有足够的信息。我已经发布了更多信息。如果您还有其他需要,请发表评论。
【问题讨论】:
这完全取决于您应用的整体结构。没有更多细节,这个问题无法得到合理的回答。 我很抱歉最初没有足够的信息。我已经发布了更多信息。如果您还有其他需要,请发表评论。 【参考方案1】:使用模态视图控制器通常保留在您需要临时显示视图的时候,例如 Apple 的 Messages 应用程序提供“新消息”控制器时。另一种做你想做的事的方法是:
[self.navigationController pushViewController:newView animated:YES];
可以在here 以及 Stack Overflow here 和 here 上找到一个很好的解释来概述两者之间的区别。关于如何设置UINavigationController
的一个不错的小教程可以在here 找到,之前的SO 问题here 涵盖了自定义动画的主题,而提供的一些源代码here 也可能对您有所帮助。呸。有很多链接。
【讨论】:
谢谢。需要更多设置是什么意思?另外,如何使用这种方法选择与默认动画不同的动画? 嗯,需要更多设置,我的意思是您必须确保必须创建一个 UINavigationController 并使用它从堆栈中推送和弹出视图控制器。这真的不是太难。我现在正在修改我的答案。【参考方案2】:模态视图控制器具有在程序流中获取“额外信息”的明确目的。它们的设计目的不是消耗更多/更少的内存。事实上,没有一种特定风格的视图控制器是在设计时考虑到内存消耗的。如果您正在收集分层信息,UINavigationController
加上UITableViewController
可能是要走的路。同样,如果您需要一条信息(例如,如果没有获取此信息就无法继续),您会呈现一个模态视图控制器(有点)提醒用户。
【讨论】:
以上是关于高效地在视图控制器之间切换的主要内容,如果未能解决你的问题,请参考以下文章