ios - Swift - 从选项卡栏 Controller 更新 View Controller 内的变量

标签 ios swift uiviewcontroller parameter-passing

我需要更新 View Controller 中的变量,并且我需要从标签栏 Controller 中执行此操作。

见下图: enter image description here

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

代码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"

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

非常感谢

最佳答案

您需要按照从选项卡栏 Controller 到自定义 View Controller 的 View Controller 层次结构,如下所示:

Tab bar controller (self) -> navigation controller -> custom view controller

我们想要获取标签栏 Controller 的第一个 View Controller (导航 Controller ),然后获取该导航 Controller 的第一个 View Controller 。在代码中,您可以这样做:

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

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

关于ios - Swift - 从选项卡栏 Controller 更新 View Controller 内的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26530588/

相关文章:

iOS 推送通知 - 向所有人发送消息

iphone - 是否可以在未安装 Xcode 的情况下在 Mac 上运行 iOS 模拟器?

ios - 如何只更新 RxDataSources 中已更改的单元格而不是全部单元格?

ios - 如何以编程方式调用 View Controller ?

swift - io将 SWRevealViewController 中的滑入和滑出动画更改为淡入和淡出

ios - 如何在一个自定义 tableView 单元格中使用两个按钮?我想在单击一个按钮时更改它们的图标

ios - 绝对值函数 abs() 在 Swift 3.0 中不可用。使用 abs(_ :) free function?

ios - iCloud Drive 可以在 watchOS 上使用吗?

ios - 如何将pod添加到本地pod项目

ios - 当我的应用程序返回前台时调用我的 View 中的方法