我正在尝试基于在viewController初始化中设置的值来更改UIButton的文本。
所以这是初始化:
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中调用此button方法时,它无效。但是,当我在viewDidLoad中调用它时,它可以工作。
该按钮的初始化方法如下:
lazy var button: UIButton = {
let button = UIButton(title: "Test", color: UIColor.green)
button.alpha = 1
return button
}()
当我将方法放入init时,默认的'Test'初始化值显示在按钮上。但是,当我同时从init和viewDidLoad中打印按钮标题时,首先调用viewDidLoad一个并显示“ Test”,然后调用init一个并显示正确的值。如果在viewDidLoad之后调用它,为什么它不反映在UI上?
当我将方法插入viewDidLoad时,显示正确的值...
肯定我在这里缺少明显的东西,但是任何帮助将不胜感激。
更新:我也从viewDidDisappear打印,即使从init调用方法,也正确的值正在打印。因此正在设置属性,但未在按钮上显示...
不确定是否是问题所在。但是您是否尝试过使用button.setTitle("myTitle", for: .normal)
设置按钮的标题?
上面的代码都没有显示您实际上在视图控制器的视图中添加了按钮-看不到它很难说,但是您有可能also在xib中创建并添加按钮,并分配它到button
属性?这将替换您在延迟加载中创建的按钮。
或者,您是否正在创建一个完全独立的按钮,但从未更新?
button
如何添加到视图控制器的视图?