8

情况:两个 UITabBarController,每个都有自己的选项卡,但两者中的最后一个选项卡是相同的,所以希望一个UIViewController 显示内容。

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

问题:有人知道使这项工作的方法吗?

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

带有该情节提要的 Xcode 项目: XCode Project

每个选项卡内容项都有自己的 UIViewController 类。除了使后退按钮起作用的行之外,它们不包含任何代码。

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

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

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

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

(另一种我更不喜欢的可能解决方案:不使用 TabBarController,并在内容 VC 中显示我自己的“选项卡”图形,每个都显示“我自己”被选中。Yuk。)

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

4

3 回答 3

0

You can't put the same view controller instance into two tab controllers. The problem is that a view (UIView) instance can only have one parent view (superview). When you try to add the view controller to the 2nd tab, the view controller's view gets removed from its first parent (the first tab) and then added to the 2nd tab.

于 2013-03-02T17:27:34.767 回答
0

我在今天遇到同样的问题时偶然发现了你的线程......解决方案是在故事板中制作视图控制器的副本并将副本附加到另一个选项卡栏控制器。我只是做了它并且它有效......我认为'rdelmar'是正确的......复制它并设置它..!!

于 2013-12-18T14:22:38.273 回答
0

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

希望这可以帮助。如果有人需要更多详细信息,请告诉我。

于 2015-01-02T21:44:48.877 回答