无法在ViewController中获取变量

问题描述 投票:0回答:2

我想从AppDelegate获取ViewController变量,我试过:

//1.
print(ViewController().strName)

//2.
let vc = ViewController()
print(vc.strName)

//3.
let vc = UIApplication.shared.keyWindow!.rootViewController as! ViewController
print(vc.strName)

一切都不起作用,打印值为空......

ViewController中的代码:

var strName : String = ""
override func viewDidLoad() {

    strName = "Tom"

}
xcode swift4 appdelegate
2个回答
0
投票

我建议检查此链接Swift: How to access in AppDelegate variable from the View controller?否则尝试在视图控制器中,

class ViewController: UIViewController {

  var strName = "someString" // some value

}

在AppDelegate中,

    var mainViewController = ViewController()

func applicationWillEnterForeground(_ application: UIApplication) {
    _ = self.window?.rootViewController as? ViewController
    print(mainViewController.strName)
}

0
投票

首先,您需要在界面构建器中设置故事板标识符

instanciate

您需要使用以下代码启动viewcontroller对象。

  let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
  let viewcontroller = storyboard.instantiateViewController(withIdentifier: "ViewController") as? ViewController

您可以在此处根据故事板名称更改故事板名称。获得控制器对象后,您可以轻松找到viewcontroller变量。

© www.soinside.com 2019 - 2024. All rights reserved.