2010-05-28 114 views
1

是否有可能通过该屏幕的UIViewController从一个xib加载其视图的单个iPhone屏幕,但是随后从另一个xib文件加载内容的另一个UIView?如果是这样,是否有可能通过单独的自定义UIViewController子类从屏幕的其余部分处理嵌套视图的事件?如果这两件事都是可能的,它们也是可取的吗?iPhone - 嵌套视图和控制器

回答

7

这是可能的。苹果建议不要一次在屏幕上激活多个UIViewController,所以他们会建议反对。如果第二个视图控制器的原因是导航或模式,我建议只做。

用于加载其他视图控制器(如导航控制器)的视图控制器需要一些自己的屏幕空间,并使用其余的视图控制器加载另一个视图控制器。没事儿。这里的标准是,只有一个控制器呈现内容,而另一个呈现导航。

视图控制器可以加载另一个视图控制器来执行一些有限的任务,如从列表中选择一个项目或输入一些文本。第二个视图控制器可能只会填充部分屏幕。这里的标准是一个控制器的模态行为,并且只会显示足够长的时间以获得一些用户输入。

至于在呈现内容的两个视图控制器之间拆分屏幕的一般情况,苹果的建议是你有一个派生自UIViewController的类管理视图。如果视图足够复杂以保证其他控制器,则从NSObject派生它们并使主视图控制器与视图一起管理子控制器。子控制器将主控制器作为委托,并且主控制器将视图传递给子控制器以管理但不拥有。

+0

优秀的,翔实的答案。听起来像我可能“合格”......虽然你的回答让我想到可能有更好的办法。我对objective-c非常陌生,而且对于面向对象/ mvc编程来说还是比较新的。我认为正确的方式来做我需要的东西可能是UIViewController的子类,然后从各种视图控制器子类化该自定义类。谢谢。 – codemonkey 2010-05-29 00:39:29

+0

我为我的大多数项目制作了自定义的UIViewController基类。 – drawnonward 2010-05-29 09:52:20