Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 带有NavigationController和TabController的故事板_Objective C_Xcode_Uinavigationcontroller_Uitabbarcontroller_Storyboard - Fatal编程技术网

Objective c 带有NavigationController和TabController的故事板

Objective c 带有NavigationController和TabController的故事板,objective-c,xcode,uinavigationcontroller,uitabbarcontroller,storyboard,Objective C,Xcode,Uinavigationcontroller,Uitabbarcontroller,Storyboard,这似乎很容易理解,但我今天下午运气不好。我拼凑了这个关于我的问题的快速、简化的故事板模型 基本上,我希望下面的表视图控制器也位于选项卡栏控制器中(除了已经存在的导航控制器)。选项卡将在两个表视图控制器之间切换 现在,带有按钮的视图控制器充当一种菜单。每个按钮都指向一个表视图控制器。理想情况下,此视图控制器的选项卡栏不可见,只能从表视图控制器导航栏上的后退按钮访问 我尝试了几种不同的方法嵌入到Tabbar控制器中,但没有一种能产生预期的结果: -我尝试过选择两个表视图控制器,并将它们嵌入到选项卡视

这似乎很容易理解,但我今天下午运气不好。我拼凑了这个关于我的问题的快速、简化的故事板模型

基本上,我希望下面的表视图控制器也位于选项卡栏控制器中(除了已经存在的导航控制器)。选项卡将在两个表视图控制器之间切换

现在,带有按钮的视图控制器充当一种菜单。每个按钮都指向一个表视图控制器。理想情况下,此视图控制器的选项卡栏不可见,只能从表视图控制器导航栏上的后退按钮访问

我尝试了几种不同的方法嵌入到Tabbar控制器中,但没有一种能产生预期的结果:

-我尝试过选择两个表视图控制器,并将它们嵌入到选项卡视图控制器中。选项卡栏不会出现在模拟器中,并且会出现“无法到达场景”警告

-我尝试将初始导航控制器嵌入Tabbar控制器。这将为第一个“菜单”页面创建一个选项卡条目。一旦我将TableView连接到tabview,它还会导致推送序列出现问题

我可以在故事板上实现一些编程选项,我只是为这个项目选择了故事板,因为它是一个相对简单的数据表示

正确的做法是什么?谢谢


选项卡栏控制器必须是视图层次结构的根视图控制器。在任何其他类型的容器控制器中放置选项卡栏控制器都违反了HIG和苹果的标准

从苹果文档:

部署选项卡栏界面时,必须将此视图安装为 你窗口的根。与其他视图控制器不同,选项卡栏 接口不应作为另一个视图的子视图安装 控制器


所以,这里的底线是你需要重新思考你的设计。一个选项是将
uitabarcontroller
设置为窗口的根视图,然后将每个
UITableViewController
放在
uitabarcontroller
内部的
UINavigationController
中。这样,您仍然可以获得导航栏,并遵守苹果的设计准则(您也不会收到那些讨厌的警告,如果您尝试将
uitabarcontroller
作为窗口的根视图以外的任何内容安装,苹果现在甚至可能会抛出一个异常).

我接受JMStone的答案,但我们可能会遇到这样的情况:我们需要将选项卡栏控制器放在其他控制器中,尤其是表视图控制器

请参阅

还有Matthjin的好例子:


希望它能帮助那些想将tab bar控制器放在table view controller中并希望进行正确导航的人。

那么,在故事板中添加tab bar控制器或在按下table view控制器时隐藏tab bar控制器需要帮助吗?基本上是现在设置的(使用“菜单”屏幕)这不可能吗?我确实尝试将每个tableview放在它自己的导航控制器中,但这显然会导致按钮的分段出现问题(选项卡栏不会出现,因为它不是启动分段的选项卡项)。该应用程序在没有任何选项卡栏控制器的情况下运行良好,但在设计审查时提出,添加一个选项卡栏可以减少从一个选项移动到另一个选项所需的操作。如果将选项卡栏设置为窗口的根视图控制器,并将包含TableViewController的导航控制器添加到选项卡栏控制器,您将看到选项卡栏和导航控制器。我最后这样做了,并放下了带有各种按钮的“菜单”控制器。既然你让我朝着正确的方向走,我就把这个作为答案。谢谢@jmstone做的和你解释的一样,但是我的标签栏不可见,你能告诉我是否需要其他东西吗。