我应该使用 的UIViewController派生类 分开我的应用程序的屏幕,通过屏幕 功能?
是的。
而且将我的应用程序基本上是手工 控制权交给这些视图 控制器,然后这将构建 我的场景,它的组件之一?
是的,尽管很多风险投资公司只是从笔尖获取他们的视图树,并且关注核心控制者的责任:1。将模型变化传播到各种视野中;以及2.将视图事件传播回模型上的适当操作。我建议获取InterfaceBuilder的挂件。这是不完美和烦人的,但它可以节省您的工作时间和代码量。
如何切换到相关视图控制器?
的许多方式:
- 如果你的风险投资商在导航控制器托管,
[[self navigationController] pushViewController:theNextVC animated:YES]
是一种常见的成语。
- 在一组风险投资组合之间切换时,最好用
UITabBarController
完成。
- 如果你想做模态叠加,
[self presentModalViewController:theNextVC animated:YES]
是如何。然而,比一两个更深的Modal堆栈变得笨拙。
- 通过将它分配给你的窗口的rootViewController属性(应用程序委托可以做到这一点,或主要的笔尖可以),在4.x中完成第一个VC的呈现。或通常在应用代理中找到的传统方式4之前的版本:
[myMainWindow addSubview:[myInitialVC view]]
。
- 一些专门的苹果提供的VC(视频,照片选择器)有他们自己的演示方法。
请注意,对于前两种方法,如果您想要的行为而不是UI小部件,您可以隐藏导航栏或选项卡栏并以编程方式执行所有操作。
我应该期待loadView被调用吗?
它会,但大部分的“我现在出现!”逻辑属于viewWillAppear:
(在过渡动画开始之前调用,当视图没有父项时)以及viewDidAppear:
(在动画完成后,在视图完全可见时调用)。loadView
仅在VC认为视图很快需要时调用一次,并且不会再次调用,除非内存不足情况转储视图并需要重新创建。
覆盖loadView
当你想用一些其他视图树构造方法完全替换nib加载。我开始这样做,但很少这样做。
覆盖viewDidLoad
当你仍然想要正常的笔尖加载发生,但也想做一些你自己的视图树构造/后处理。这是我发现自己在99%的时间内完成的。
当某些触发器要求移动到屏幕B时,会调用“转换”我的视图,然后调用其他视图控制器来“设置视图”并将它们转换为?
如果您使用前面列出的任何演示方法,则会发生过渡。所有你需要做的是实现viewWill/DidAppear和朋友,当它发生时被告知。
您可能希望调查“TheElements”示例项目(在xcode文档中搜索“元素”)根据要求,它不使用nibs;它以艰难的方式设置了代码中的所有内容。它有很好的使用TabBarController和NavigationController的例子,并且或多或少以推荐的方式在VC之间分割责任。
哇,很多的话。随意编辑这个只是你发现有用的位,如果有的话。 – rgeorge 2011-02-02 06:10:43