【问题标题】:Swift - Update variable inside view Controller from Tab Bar ControllerSwift - 从标签栏控制器更新视图控制器内的变量
【发布时间】:2014-10-23 14:35:22
【问题描述】:

我需要更新视图控制器中的变量,并且需要从选项卡栏控制器执行此操作。

见下图:

我尝试了很多不同的代码,但是由于我在两者之间实现了一个导航控制器,它们都不起作用。

代码1

let myVC:MyViewController = self.viewControllers?[0] as MyViewController
myVC.x = "marco"

代码2

var storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
var myVC:MyViewController = storyboard.instantiateViewControllerWithIdentifier("view2") as MyViewController
myVC.x = "marco"

代码3

let myInstance:MyViewController = MyViewController()
myInstance.x = "marco"

但它们都不起作用。 请帮忙

非常感谢

【问题讨论】:

  • 看看你的结构。第一个选项卡中的根视图控制器是什么?

标签: ios swift uiviewcontroller parameter-passing


【解决方案1】:

您需要遵循从标签栏控制器到自定义视图控制器的视图控制器层次结构,如下所示:

标签栏控制器(self)->导航控制器->自定义视图控制器

我们想要获取标签栏控制器的第一个视图控制器(导航控制器),然后获取该导航控制器的第一个视图控制器。在代码中,你可以这样做:

let myVC = (self.viewControllers?[0] as UINavigationController).viewControllers[0] as MyViewController
myVC.x = "marco"

请注意,这很脆弱,如果您完全更改层次结构,将会失败。

【讨论】:

  • 太棒了!有用!!我注意到这真的很脆弱,但这是唯一正确的方法吗?非常感谢!
  • 我在不同的场景中遇到了同样的问题。你能帮我解决这个问题吗? stackoverflow.com/questions/26533449/…
猜你喜欢
  • 1970-01-01
  • 2017-07-24
  • 2012-06-23
  • 2017-11-26
  • 1970-01-01
  • 2011-12-15
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多