有效地在视图控制器之间切换

时间:2012-01-19 00:27:09

标签: iphone ios cocoa-touch uiviewcontroller modalviewcontroller

为了在我的iOS应用中切换视图,我一直在使用模态视图控制器。它工作正常,但这是错误的编码实践吗?它对我的应用程序的内存使用有害吗?

在回复要求提供更多信息的评论时,我之间切换的观点是正常的信息观点。我使用三个视图浏览我的应用程序:

  • 主视图:具有导航到特定信息视图的按钮
  • 信息视图:具有导航到特定网页以获取信息的按钮
  • Web视图:通过UIWebview显示信息

我在顶部有一个即兴导航栏,用于导航“返回”和“主页”执行主页。

总的来说,这是一个Web应用程序,其结构在其他视图中提供了菜单。我不想透露具体的内容(这是我的想法),但这应该是足够的信息。

我目前正在这样的观点之间切换:

newViewController *newView = [[newViewController alloc] init];
[self presentModalViewController:newView animated:YES];

根据目前为止的答案,模态视图旨在快速和暂时显示动画,但我正在寻找更持久的方法。

有更好的方法吗?请提供您的回复示例代码。谢谢!

编辑:我为原本没有足够的信息而道歉。我发布了更多信息。如果您还有其他需要,请发表评论。

2 个答案:

答案 0 :(得分:2)

使用模态视图控制器通常会在您需要临时显示视图时保留,例如Apple的消息应用程序显示“新消息”控制器时。另一种做你想做的事情,需要更多的设置,是:

[self.navigationController pushViewController:newView animated:YES];

可以找到一个很好的解释,概述两者之间的差异here以及有关Stack Overflow herehere的问题。可以找到关于如何设置UINavigationController的精彩小教程here,之前的SO问题here涵盖自定义动画主题,而一些源代码提供{{3}也可以帮助你。唷。这是很多链接。

答案 1 :(得分:0)

模态视图控制器具有在程序流中获取“额外信息”的明确目的。它们的设计不是为了消耗更多/更少的内存。实际上,没有特定类型的视图控制器在设计时考虑到内存消耗。如果您要收集分层的信息,UINavigationController加上UITableViewController可能就行了。同样,如果您需要一条信息(并且,例如,如果没有获得此信息,则无法继续),您将提供一个模式视图控制器(一种)警告用户。