iOS多视图应用程序

时间:2011-09-11 17:17:05

标签: objective-c ios uiview uinavigationcontroller modalviewcontroller

我正在尝试构建一个多视图应用程序,即基于某些手势,显示,删除新视图等。

我找到了三种方法 -

  1. [self.view insertSubview:newViewController.view atIndex:3];
  2. 使用UINavigationController
  3. 最后使用modalViewController - [self presentModalViewController:newViewController animated:YES];
  4. 首先,在第二种方法中,我可以在没有UINavigationTabBar的情况下使用此控制器吗?我有一组自定义UIView对象,我想推送它们。从屏幕弹出。我不希望丑陋的Apple的NavigationBar位于顶部(或底部)。我将提供基于[self.navigationController popViewControllerAnimated]应该发生的自定义按钮。这有可能吗?

    此外,哪种技术最好?在使用方面&代码维护,内存使用等。

2 个答案:

答案 0 :(得分:1)

在使用方面&代码维护,内存使用等,毫无疑问UINavigationController是最合适的。它已针对你正在做的事情进行了优化。并且因为您从它(而不仅仅是UIViewController)推送UIView,所以当前未显示在屏幕上的视图可以自动释放以释放操作系统的内存。

您可以使用导航视图,而顶部没有栏吗?我想也许你应该RTFM。具体而言,-setNavigationBarHidden:animated:

尽管如此,UINavigationController在做不想做的事情上并不是特别灵活。特别是,它认为它用于在其堆栈上的视图控制器之间进行动画处理的转换。

你可能有一些运气推送和弹出没有动画(通过将NO传递给这些方法的animated:参数),并设置一个代理来处理-navigationController:willShowViewController:animated:。理论上,您可以在那里向根视图的动画添加CATransition。但是比这更复杂的东西(在滑动到屏幕时跟踪你的手指的视图等),你可能必须编写自己的控制器并管理自己的视图。

但你仍然应该阅读Apple的适用于iOS的视图控制器编程指南NSNavigationManager规范,直到你完全了解它们。很难找到一个更好的模式来建立你的设计。

答案 1 :(得分:0)

第二个UINavigationController。是的,您可以使用自定义导航栏。