我想创建自己的容器视图控制器,例如UINavigationController
或UITabBarController
。文件说我不应该这样做,但为什么不呢?导航和tabbar容器是很好的例子,这样的东西是可能的,并且工作得非常好。另外我知道iPhone有小屏幕,人们不应该通过导航按钮等弄乱它,但是在iPad上有很多空间,将它分割成许多视图控制器会给我们很大的机会。
我有一种感觉Apple还没有添加这样的API,但他们会。几天前,他们已经添加了关于iPad特定控制器的文档(是的,容器控制器),并且他们将文本修改为不那么令人生畏的东西。
无论如何......如果我尝试在一个屏幕上使用两个或更多视图控制器,我可能遇到什么问题?我知道只有其中一个会获得方向更改或低内存警告等事件,因此我必须将这些事件传递给包含的VC。我担心与未来版本的iOS的兼容性,如果他们将添加新事件,那么包含的VC将不会执行从UIViewController
继承的默认操作。还要别的吗?你认为我的应用程序可能会被Apple拒绝吗?也许还有其他方法可以在每个屏幕上保留一些视图元素,而不会将大量相同的代码复制到每个VC?
提前致谢。
答案 0 :(得分:3)
iOS5现在支持此功能。有关示例代码,请参阅此问题:Container View Controller Examples
答案 1 :(得分:2)
子类化UINavigationController或UITabBarController是处理设备轮换问题的绝佳方法,但我不建议专门用于共享多个视图控制器的子视图。
也许你正在寻找子类化UIViewController。然后,当加载视图时,您可以从nib加载共享视图并在UIViewController子类中定义出口,并将任何支持代码添加到子类以处理事件。我自己做了这个,因为添加了一个状态更新消息,我希望能够在我的任何视图控制器视图中显示它。