切换UIViewController - 不明确

时间:2012-02-19 12:10:33

标签: objective-c ios uiviewcontroller

我已经阅读了很多关于这个问题的问题,但我仍然无法找到解决这个问题的正确方法。我有一个新闻应用程序,从启动屏幕开始(要获取新闻源并缓存它们),然后它切换到主屏幕,这是新闻文章的混搭。您可以通过单击文章,部分,画廊,视频等从这个屏幕导航到许多其他屏幕...我有一个固定的页眉和页脚,我决定将UIViewController主子化并放置在那个上面(我' ll在我的其他UIViewControllers中继承这个UIViewController)

我已经读过,最好的方法是让多个视图控制器分别控制我的应用程序的特定部分。但是,我仍然对如何正确和负责任地切换它们感到困惑。我尝试了故事板segues,但我遇到了两个问题:

  1. 我需要创建很多segues,因为你几乎可以跳过 任何其他屏幕的任何屏幕
  2. 一旦你跳到另一个,segues将不会保留UIViewController的状态,一旦你回去它就会重置为它 初始状态。
  3. 我还阅读了有关presentModalViewController的内容,您可以使用该控件将视图作为模式推送到当前控制器的顶部。但是你需要做很多事情,我有点担心内存消耗问题。

    在没有应用程序视图的情况下创建多视图应用程序的最佳方法是什么(UINavigationController / UITabController / etc ...)通常我想在开始时声明我的所有视图控制器,并根据需要在它们之间切换(当我第一次需要一个视图时,我会初始化它)任何人都尝试过类似的东西吗?

    非常感谢。

    编辑:感谢您的回复,我出去观看了关于UIViewController遏制的WwDC会话,这有助于我了解如何实现自定义UIViewController容器。然而,仍有一些我无法掌握的东西。

    当我创建一个自定义的UIViewController容器时,我需要使用addChildViewController向它添加子项,这将触发我的子UIViewController上的willMoveToParentController事件。

    然后我使用[self.view addSubview ...]将子控制器子视图添加到容器视图中,但是这只加载视图并且不将它们链接到我在子UIViewController中创建的事件。

    我应该使用addSubview之外的其他内容吗?或者我应该使用单独的UIView类来连接我的事件吗?

1 个答案:

答案 0 :(得分:0)

如果您使用新的iOS 5,我建议您阅读UIViewController Class Reference实施容器视图控制器部分。

通过这种方式,您可以创建一种管理其他视图控制器的容器控制器。关键是你可以实现自己的控制器并切换动画。

此模式可应用于故事板和非故事板应用程序。我更喜欢第二种方法。

关于内存消耗,如果您以正确的方式管理内容,则无需担心。也许,如果您已经缓存了数据,则可以从视图层次结构中添加或删除当前显示的控制器view(但将控制器保留为主控制器的子控件)或删除两者。

希望它有所帮助。