看起来这个应该很容易搞定,但是我今天下午就没有运气了。我将我的问题的这个快速、简化的 Storyboard模型放在一起。
基本上,我希望下面的 TableView Controller 也位于选项卡栏 Controller 中(除了已经存在的导航 Controller 之外)。选项卡将在两个 TableView Controller 之间切换。
现在,带有按钮的 View Controller 充当一种菜单。每个按钮都指向一个 TableView Controller 。理想情况下,此 View Controller 不会使选项卡栏可见,并且只能通过 TableView Controller 导航栏上的后退按钮访问。
我已经尝试了几种不同的方式来嵌入到 tabbarcontroller 中,但没有一种能产生预期的结果:
-我已经尝试选择两个 TableView Controller 并将它们嵌入到选项卡 View Controller 中。标签栏不显示在模拟器中,并出现“无法访问的场景”警告。
-我已经尝试将初始导航 Controller 嵌入到 tabbarcontroller 中。这会为第一个“菜单”页面创建一个选项卡条目。一旦我将 tableviews 连接到 tabview,它也会导致 push segues 问题。
我会很好地在 Storyboard之上实现一些编程选项,我只是为这个项目选择了 Storyboard,因为它是一种相对简单的数据表示。
解决这个问题的正确方法是什么?谢谢!
最佳答案
标签栏 Controller 需要是 View 层次结构的 Root View Controller 。将标签栏 Controller 放入任何其他类型的容器 Controller 内违反了 HIG 和 Apple 的标准。
来自 Apple 文档:
When deploying a tab bar interface, you must install this view as the root of your window. Unlike other view controllers, a tab bar interface should never be installed as a child of another view controller.
因此,这里的底线是您需要重新考虑您的设计。一种选择是将 UITabBarController
设置为窗口的 Root View ,然后将每个 UITableViewController
都放在 UINavigationController
中,它位于 UITabBarController
内。通过这种方式,您仍然可以获得导航栏,并保持在 Apple 的设计指南中(您也不会收到那些讨厌的警告,如果您尝试安装 UITabBarController
,Apple 现在甚至可能会抛出异常> 与窗口的 Root View 不同)。
关于objective-c - 带有 NavigationController 和 TabController 的 Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14246454/