在方法对变量进行更改后更新UI上的值(Swift 3)

时间:2017-06-03 19:52:25

标签: swift xcode

我是新手。在我的UI上,我有标签显示某些类实例的值。而且,我有一个类方法,可以增加这些实例的价值。调用此方法后,我的实例值会更新;但UI上的标签保持不变。如何使此方法也更新这些标签中的数字。

这是我的ViewController代码:

@IBOutlet weak var displayValue: UILabel! //this is the label that displays newNumber's value

override func viewDidLoad() {
    super.viewDidLoad()
    dispValue.text = String("\(newNumber.value))")
}

这是我的代码:

class MyNumbers {
    var value = 50

    func increaseValue(by: Int){
       value += by
    }
}

var newNumber = myNumbers()
newNumber.increaseValue(by: 5) //This does increase newNumber's value to 55 
//but my label on my UI remains as 50 

1 个答案:

答案 0 :(得分:0)

您需要将更新后的值分配给UILabel。最佳实践始终确保您在主线程中调用UI更改,并在进行UI更新时更新AutoLayouts。

替换:

newNumber.increaseValue(by: 5)

使用:

DispatchQueue.main.async {
    newNumber.increaseValue(by: 5)
    self.displayValue.text = "\(newNumber.value)"
    self.view.layoutIfNeeded()
}