我有一个具有登录屏幕的应用程序,当用户登录时,会按下标签栏控制器。我目前有一些观点可以从苹果现在允许在所有iOS设备中使用拆分视图控制器的事实中受益,所以当我读到UISplitViewController必须始终是根视图控制器时,我正准备实现这一点。所以我想知道是否可以使用UISplitViewController使其中一个选项卡中的视图成为主 - 详细视图,还是需要手动实现?
如果无法将拆分视图显示为标签,是否可以从标签栏控制器中推送? (例如,用户在表格视图中点击一行,并显示主 - 详细信息视图)。
答案 0 :(得分:23)
您绝对可以在UISplitViewController
内嵌入UITabBarController
。我已经完成了我在App Store上发布的应用程序。它有3个选项卡,每个选项卡都是一个拆分视图控制器。
只需将标签栏控制器拖出到Storyboard中,删除它添加的两个控制器,然后拖出一个拆分视图控制器。控制从标签栏控制器拖动到拆分视图控制器,并选择“视图控制器”关系segue。
在Xcode 8以下的Xcode版本中,您可能会在Interface Builder画布中的拆分视图控制器的顶部和底部看到黑色或白色条形图,但在应用程序在设备上运行时不会显示这些条形图。
这是运行的应用程序,用于显示嵌入iPhone 6s Plus标签栏控制器内的拆分视图:
答案 1 :(得分:13)
当您将 UISplitViewController置于UITabBarController 中且标签栏设置为opaque
时,您遇到的问题是您的UISplitViewController内容向上移动了标签的大小杆强>:
要解决此问题,您必须检查故事板中UISplitViewController上的 Under Opaque Bars复选框:
现在正确计算了UISplitViewController视图大小:
答案 2 :(得分:4)
在iPhone(> IOS8)中使用此方法也存在问题,其中splitviewcontroller处于折叠模式。当我们将列表视图推送到详细信息视图时,我们无法使用传统的" hidesBottomBarWhenPushed"隐藏tabbarcontroller。所以我添加了TabBarcontroller作为navigationcontroller的root viewcontroller。现在,当我推送到详细信息视图时,我将消息发送到根导航控制器并以折叠模式将视图推送到详细信息视图实例,而在常规模式下,我只需使用showDetailsViewController()
推送它