Я инициализировал контроллер представления, как показано выше, но при попытке
получить доступ к метке IBOutlet из инициализированного контроллера представления и
установить его текст, метка ноль.
Это потому, что представление (UILabel
) еще не инициализировано до того, как вы представите / нажмете контроллер.
Итак, я должен передать значение переменной, а затем использовать его в
viewDidLoad, чтобы установить заголовок. Есть ли другой простой способ сделать
это?
Да. И да. Если вы объявляете представление (UILabel
) лениво , вы можете напрямую передать значение туда, например:
class ViewController: UIViewController {
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let vc2 = VC2()
vc2.label.text = "HELLO"
self.present(vc2, animated: true, completion: nil)
}
}
class VC2: UIViewController {
lazy var label: UILabel = {
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 30))
label.textColor = .gray
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .red
self.view.addSubview(self.label)
self.label.center.equalTo(self.view.center)
}
}