Я пытаюсь изменить текст UIButton на основе значений, которые установлены в моем init viewController.
Итак, вот инициализация:
init(viewModel: ViewModel, stateMachine: StateMachine) {
self.viewModel = viewModel
self.stateMachine = stateMachine
super.init(nibName: nil, bundle: nil)
title = "TEST"
setInitialButtonText()
}
Метод установки кнопки:
private func setInitialButtonText() {
if viewModel.order.measurement.total != nil {
button.title = "Review"
} else {
button.title = "Check"
}
}
Необходимые значения загружаются в viewModel.
Теперь, когда я вызываю этот метод кнопки в этом init, это не имеет никакого эффекта. Тем не менее, когда я вызываю его в viewDidLoad, он работает.
Код кнопки выглядит следующим образом:
lazy var button: UIButton = {
let button = UIButton(title: "Test", color: UIColor.green)
button.alpha = 1
return button
}()
init(@escaping buttonAction) {
super.init(frame: .zero)
translatesAutoresizingMaskIntoConstraints = false
stackView.addButtons([button])
button.pressedAction = buttonAction
}
Когда я помещаю метод в init, инициализированное значение по умолчанию «Test» показывает на кнопке. Однако, когда я печатаю заголовок кнопки из init и viewDidLoad, сначала вызывается viewDidLoad, который показывает «Test», а затем вызывается init и показывает правильное значение. Если это вызывается после viewDidLoad, почему оно не отражается на пользовательском интерфейсе?
Когда я вставляю метод в viewDidLoad, отображается правильное значение ...
Конечно, я что-то упустил здесь очевидно, но любая помощь приветствуется.
ОБНОВЛЕНИЕ: Я также печатал из viewDidDisappear, и правильное значение печатается, даже когда я вызываю метод из init. Таким образом, свойство устанавливается, но не отображается на кнопке ...