UISplitView优于手工制作的容器

时间:2014-01-20 17:52:25

标签: ios ipad uisplitviewcontroller

我有一个最初为iPhone制作的应用程序。在一个故事板场景中,有两个容器视图嵌入了两个不同的视图控制器,以不同的方式显示模型。用户可以通过一些切换按钮切换显示其中任何一个。

现在我想为iPad做好准备,可以同时显示两个嵌入式视图。最初的直觉是使用UISplitView,但尝试感觉比需要更麻烦:

  • 我无法轻易地在原始iPhone版本中重用控制器中的逻辑,例如由于缺少多重继承,我无法继承该控制器和UISplitViewController
  • 无法在导航视图控制器中推送拆分视图控制器。

所以,现在我想:为什么不保持(几乎)所有相同的东西并将容器视图并排放置,模拟拆分视图,并保持相同的旧控制器和逻辑(除了不需要切换按钮)。

但是,分裂观点必须存在,所以我的问题是:这是一个好方法吗?我可能会错过分割视图的内置功能和功能?我的特定应用程序仅用于横向,因此纵向自动分割视图与我无关。

2 个答案:

答案 0 :(得分:0)

Uisplitviewcontroller仅仅是具有委托的容器(主要控制主视图的show hide行为。) 为了简单使用,就像你的情况一样,这只是一个方向,我认为uisplitviewcontroller比手工制作更好。

临: 简单易用 在方向更改时,它会为您提供主视图的参考,以防您隐藏它并且您可以通过弹出窗口显示它(首选以纵向模式保存屏幕)

缺点: Uisplitviewcontroller将始终是您的应用程序的rootview控制器。 (黑客也是这样,但仍然)。因此,如果旅游应用程序使用登录屏幕,您需要以模态方式显示。这意味着您的主应用程序视图将出现在登录本身之前(虽然通过模态隐藏,但在生命周期中它将在登录屏幕之前加载。 我发现uisplitviewcontrol不太成熟。下面是示例,我的应用程序使用滑动来关闭/显示主视图,一旦我需要在主视图可见时从详细信息视图中以模态方式显示屏幕。模态屏幕在主视图和详细视图之间分层。虽然我通过呈现主人自己的视图来解决这个问题,但我仍然认为uisplitview控制是一个统一的控制,这很奇怪。

答案 1 :(得分:0)

在发明UISplitViewController时(iOS 3.2),创建自己的容器视图控制器是非法的,即视图控制器的视图包含其他视图控制器的视图。您必须仅使用Apple提供的容器视图控制器。所以UISplitViewController正在做的事情无法以任何其他方式完成。

在iOS 5中,引入了自定义容器视图控制器,并且UISplitViewController立即变得不必要;编写自己的替代方案变得合法。我甚至写了一个(警告,这是iOS 5代码):

https://github.com/mattneub/Programming-iOS-Book-Examples/blob/master/iOS5bookExamples/ch22p667splitViewNoPopover/p560p575splitViewNoPopover/MySplitViewController.m

所以我的建议是,只要您了解自定义容器视图控制器的工作方式,就可以做您喜欢的事情!