两个UITabBarControllers共享一个ViewController(作为选项卡内容)?

时间:2013-03-02 17:22:55

标签: ios uitabbarcontroller

情况:两个UITabBarController,每个都有自己的标签,但中的最后一个标签是相同的,所以想要一个 UIViewController来显示内容。

运行时问题:共享项目仅显示在选项卡集的一个中。

问题:有人知道如何使这项工作?

链接到故事板设置的外部图形:(抱歉,没有足够的声誉在这里发布图像!) Storyboard graphic

带有该故事板的Xcode项目: XCode Project

每个标签内容项都有自己的UIViewController类。它们不包含任何代码,除了使后退按钮工作的行。

(是的,我知道这很奇怪。真实的情况是一个iPad应用程序,其中标签控制器显示在弹出窗口中;弹出窗口是“属性编辑器”,其中不同的对象具有不同的属性,但所有属性共享一组共同的属性...因此,“独特”道具的一个标签,一个共享标签内容,用于所有对象具有的“共同”道具。)

我已经找到了几种方法来获得我想要的效果,但如果这个故事板有效,那将是一个更容易的解决方案。

- 其他信息,与问题无关 -

我正在使用的替代解决方案:TabBarControllers仅链接到一个VC作为选项卡内容。当VC加载该选项卡时,我使用代码(a)通过标识符从storyboard实例化共享VC,(b)通过[tabController setViewControllers:list animated:NO]将新VC对象添加到TabBarController。

(我更喜欢的另一种可能的解决方案:不使用TabBarController,并使用我自己的“tab”图形呈现内容VC,每个图形都显示“我自己”.Yuk。)

所以我有一个可行的解决方案,我只是好奇为什么这不起作用(只是iOS API中的一个已知的东西,或者一些可能使它起作用的神奇属性设置?)

3 个答案:

答案 0 :(得分:0)

您不能将同一个视图控制器实例放入两个选项卡控制器中。问题是视图(UIView)实例只能有一个父视图(superview)。当您尝试将视图控制器添加到第二个选项卡时,视图控制器的视图将从其第一个父项(第一个选项卡)中删除,然后添加到第二个选项卡。

答案 1 :(得分:0)

今天遇到同样的问题,我偶然发现了你的话题...... 解决方案是在故事板中复制视图控制器并将副本附加到另一个选项卡栏控制器。 我刚刚做了它,它的工作原理...... 我认为'rdelmar'对此是正确的......复制并设置它...... !!

答案 2 :(得分:0)

我今天遇到了同样的问题。我设法提出了一个似乎可以解决问题的解决方法。关键是在tabbar和要重用的控制器之间添加一层分隔。从每个tabbar,我创建了一个与容器视图不同的UIViewController的关系。然后你可以做一个“嵌入”。从容器到您实际想要重用的控制器的segue作为选项卡视图。它不像直接连接那样干净(不确定为什么不支持),因为您必须为每个重用案例创建一个控制器类。对于每次使用都必须复制实际标签视图(以及连接到它的任何其他视图)的噩梦,它仍然是一个更好的解决方案。

希望这会有所帮助。如果有人需要更多细节,请告诉我。