标签栏控制器和segue导航

Posted

技术标签:

【中文标题】标签栏控制器和segue导航【英文标题】:tab bar controller and segue navigation 【发布时间】:2016-04-05 19:53:37 【问题描述】:

谁能解释我的逻辑?

我有以下结构:

在 VC1("Item1") 我有一张桌子。表的单元格与 VC2("Item") 连接,并通过 segue 将一些变量传递给 VC2。这部分工作正常。按下表格的单元格后,它会将我带到 VC2。

我不明白的是为什么底部的标签视图控制器显示我还在VC1上?

以及为什么我什至可以在选项卡控制器(“项目”)上按 VC2,它会显示它但没有传递变量(当然它不应该显示变量)。

【问题讨论】:

如果 VC2 需要来自 vc1 的数据才能正常工作,为什么还需要链接到 tabController? 最初的想法是显示来自选定单元格的更多指定数据。如果它是从标签控制器访问的 - 它会显示更多的一般数据 【参考方案1】:

当应用加载标签栏时,会实例化一个 VC2 实例。当您执行 segue 时,另一个实例被实例化并被抛出到导航堆栈上,即 tab1。此时,您从未离开过第一个选项卡。当您单击第二个选项卡时,您正在查看 VC2 的原始实例,该实例缺少通过 segue 传递的数据。

【讨论】:

如果我这样做,我将在管理标签栏(通常是 appdelegate)的类中有一个 NSNotification 侦听器。当从 VC1 获取数据时,我会调用通知并将所需的任何数据对象传递给它。该类(通常是 appdelegate)会听到通知、访问数据对象并手动导航到 VC2 选项卡。由于此类可以访问正确的实例,因此它可以传递必要的数据。 感谢您的澄清!是否可以对现有的 VC2 实例执行 segue?也许在 prepareforsegue 方法中我需要使用 let viewController = segue.destinationViewController ! self.SecondViewController

以上是关于标签栏控制器和segue导航的主要内容,如果未能解决你的问题,请参考以下文章

放松Segue隐藏标签栏

Swift 导航控制器嵌入在带有 segue 的选项卡栏中

如何从标签栏控制器执行 show segue?

组合标签栏和导航栏控制器出现问题

iOS两个标签栏按钮与segue相同的navigationcontroller

结合标签栏控制器和导航控制器