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

谁能解释我的逻辑?

我有以下结构:

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

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

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

【问题讨论】:

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

标签: ios swift uitabbarcontroller segue


【解决方案1】:

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

【讨论】:

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