Joe*_*oey 1 controller view ios
我已经创建了一些iPhone和iPad应用程序,但我已经用另一个支持api或者像Cocos2d这样的开源库来支持场景管理和屏幕转换.我不觉得我已经完全明白了屏幕/场景/视图管理是如何应该没有这些外部API来完成.有人可以非常简单地,但清楚地解释一个应用程序如何管理屏幕转换和/或指向一个很好的参考,以尽可能少的杂乱来证明这一点?
我是否应该使用UIViewController派生类来分离我的应用程序的屏幕功能(除了已经用于处理导航控制器等多屏操作的功能)?我的应用程序基本上可以控制到其中一个视图控制器,然后构建我的场景及其组件(如标签,按钮,任何视图).如何切换到相关的视图控制器,我应该期望调用loadView吗?然后,当某些触发器要求移动到屏幕B时,是否会调用"转换"我的视图,然后调用其他视图控制器来"设置视图"并将其转换为?
如果有一个示例程序真正说明了这一点,最好没有界面构建器,那将是理想的.
我应该使用UIViewController派生类来分离我的应用程序的屏幕功能吗?
是.
我的应用程序基本上可以控制到其中一个视图控制器,然后用它的组件构建我的场景吗?
是的,虽然许多VC只是从一个笔尖获取他们的视图树,并且关心核心控制器的职责:1.将模型更改传播到各个视图字段; 2.将视图事件传播回模型上的适当操作.我建议继续使用InterfaceBuilder.这是不完美和烦人的,但它可以节省你的工作时间和大量的代码.
如何切换到相关的视图控制器?
有很多方法:
[[self navigationController] pushViewController:theNextVC animated:YES]则是一种常见的习惯用法.UITabBarController.[self presentModalViewController:theNextVC animated:YES]是怎么做的.模态堆叠比一两个更深,但是变得笨拙.[myMainWindow addSubview:[myInitialVC view]].请注意,使用前两种方法,如果您需要行为而不是UI小部件,则可以隐藏导航栏或标签栏并以编程方式执行所有操作.
我应该期望调用loadView吗?
它会,但你的大部分"我现在出现了!" 逻辑属于viewWillAppear:(在转换动画开始之前调用,当视图还没有父级时)和viewDidAppear:(在动画之后调用,当视图完全可见loadView时调用.)当VC认为不久需要视图时调用一次,并且isn除非低内存条件转储视图并且需要重新创建,否则不会再次调用.
loadView当您想要使用其他视图树构造方法完全替换nib加载时覆盖.我开始做这个,但很少这样做.
viewDidLoad当你仍然希望正常的笔尖加载发生时覆盖,但也想做一些你自己的视图树构造/后处理.这就是我发现自己99%的时间都在做的事情.
当某些触发器要求移动到屏幕B时,是否会调用"转出"我的视图,然后调用其他视图控制器来"设置视图"并将其转换为?
如果您使用前面列出的任何演示方法,则会发生转换.您需要做的就是实现viewWill/DidAppear和朋友,以便在发生时通知他们.
您可能希望调查"TheElements"示例项目(在xcode文档中搜索"元素")根据要求,它不使用nib; 它以艰难的方式在代码中设置所有内容.它有很好的使用TabBarController和NavigationController的例子,并且或多或少地以推荐的方式在VC之间分配责任.
| 归档时间: |
|
| 查看次数: |
2235 次 |
| 最近记录: |