为什么必须将分割视图控制器始终作为您创build的任何界面的根?

在Apple的开发人员指南中,他们声明:“分割视图控制器必须始终是您创build的任何界面的根”( 请参阅此处 )。 我很好奇,如果有人知道他们为什么决定。 我有一个标签导航器为基础的应用程序,它是有意义的一个选项卡中的内容在分割视图中呈现。 为什么苹果会反对这种devise? 预先感谢您的答案。

– 最大

PS我没有find方法把一个分割视图控制器在选项卡导航器控制器(即使我看得出,即使代码看起来马虎)。 如果有人知道为什么苹果不喜欢它,我更好奇。

我不认为这是一个用户体验决定,而是一个技术限制。 UIKit对如何使用UIViewControllers进行了一些假设。 包括只有一个UIViewController实例在给定窗口中在任何给定时间都可以看到其视图的想法。 现在,由于苹果已经获得了实现,他们已经能够为自己的“容器视图控制器”类(UINavigationController,UITabBarController和UISplitViewController)制定例外。 我们不能确切地知道这些控制器有多less特殊情况,或者他们需要做什么来支持正确显示嵌套的子视图控制器,但是一个后果似乎是UITabBarController和UISplitViewController不能用作除了作为根查看窗口的控制器。 尝试在其他容器视图控制器中嵌套它们可能会导致意外或不可靠的行为。

我试图覆盖这些使用视图控制器和一些可能的替代方法的限制: http : //blog.carbonfive.com/2011/03/09/abusing-uiviewcontrollers/希望这对你有一些用处,但我害怕获得UI的唯一可靠的方法似乎是在单个UIViewController视图中寻找它来实现自己的分割视图样式显示。

请忽略我的回答:

因为你不能调整触摸的UISplitViewController的子视图?

苹果一贯高度重视用户界面元素的一致性使用。 使所有应用程序以相同的方式工作,可以帮助用户立即了解应用程序的工作原理,即使他们以前从未见过。 当您试图帮助用户预测行为时,build立视图控制器容器的概念层次结构是非常有意义的。