Ios 两个UITABBARC控制器共享一个ViewController(作为选项卡内容)?

Ios 两个UITABBARC控制器共享一个ViewController(作为选项卡内容)?,ios,uitabbarcontroller,Ios,Uitabbarcontroller,情况:两个UILabarController,每个都有自己的选项卡,但两个选项卡中的最后一个选项卡是相同的,所以希望一个UIViewController显示内容 运行时问题:显示时,共享项仅出现在其中一个选项卡集中。 问:有人知道如何让这项工作成功吗 指向故事板设置外部图形的链接:(抱歉,没有足够的声誉在此处发布图像!) 具有该情节提要的Xcode项目: 每个选项卡内容项都有自己的UIViewController类。除了使后退按钮工作的行之外,它们不包含任何代码 (是的,我知道这很奇怪。真实

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

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

问:有人知道如何让这项工作成功吗

指向故事板设置外部图形的链接:(抱歉,没有足够的声誉在此处发布图像!)

具有该情节提要的Xcode项目:

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

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

我已经找到了一些方法来达到我想要的效果,但是如果这个故事板能起作用,那将是一个更容易的解决方案

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

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

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


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

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

今天遇到相同问题时,我偶然发现了您的线程。。。 解决方案是只在story board中复制视图控制器,并将副本附加到另一个选项卡栏控制器。 我刚做了,而且很有效。。。
我认为rdelmar是对的。。。复制它并设置它

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


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

注意类似的问题,重点不同(表和重复使用的视图等出现了一些奇怪的情况……):我不确定您想要完成什么。在代码中添加第二个选项卡的解决方案可以在故事板中完成,只需复制共享控制器,并将一个实例挂接到每个选项卡栏控制器。在任何一种情况下,您都会得到两个不同的“共享”控制器实例。我试图实现的是,当我决定需要不同的背景颜色和按钮布局时,不必在“一个”故事板场景的多个副本中编辑UI布局。在本例中,只有两个副本。在我的实际应用程序中,可能会有10+,因此希望分享。我试图避免将UI外部化到.XIB文件中并从那里加载,而这正是故事板的目的所在。我并不反对,但我不确定这是问题的根源。整个TabBarController按钮消失,而不仅仅是视图。第二个ViewController在第二个TabBarController的ViewController数组中从未设置过。虽然[view addSubview:sub]确实会导致子视图作为副作用从任何现有父视图中删除,但问题似乎比这更复杂。我想确认苹果的故事板实现无法自动实例化SharedViewController的两个实例(创建两个视图对象)。另外:一次只显示一个TabBarController,那么为什么每个都不能充分利用SharedViewController的一个实例呢?我同意同时在两个地方查看会有问题,但这里不是这样,除非API在未显示时将故事板的完整ViewController集保存在内存中。首先显示哪个TabBarController似乎无关紧要,所以它不像显示它时“控制”视图,所以第二个演示稍后会从其他人的层次结构中获取视图。选项卡永远不会显示在第二个TBController中。因此,每当您想要更改布局时,都要更新故事板场景的十几个副本,这是一个噩梦。复制东西并在多个地方使用相同但不同的副本只会让我的程序员想呕吐一点…:-)我显然继续前进(并继续复制),但我认为您的解决方案会奏效。。。假设一个内容视图控制器可以有多个“入站”ebed序列。您是对的,它不那么直接,并且造成了麻烦,因为选项卡控制器不能直接引用它的内容(即容器视图控制器)。日分