Не удается получить переменную во ViewController - PullRequest
0 голосов
/ 22 марта 2019

Я хочу получить переменную ViewController из AppDelegate, я попытался:

//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"

}

Ответы [ 2 ]

0 голосов
/ 22 марта 2019

Сначала вам нужно установить идентификатор раскадровки в конструкторе интерфейсов

instanciate

Чем вам нужно инициировать ваш объект viewcontroller, используя следующий код.

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

Здесь вы можете изменить название раскадровки в соответствии с названием раскадровки.После того, как вы получили объект контроллера, вы можете легко найти переменную viewcontroller.

0 голосов
/ 22 марта 2019

Я предлагаю проверить по этой ссылке Swift: Как получить доступ к переменной AppDelegate из контроллера View? еще попробуйте в контроллере представления,

class ViewController: UIViewController {

  var strName = "someString" // some value

}

В AppDelegate,

    var mainViewController = ViewController()

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