根据iOS中数组中的值自动更新UiLabels

时间:2017-12-22 12:36:39

标签: ios swift uitableview

我有一个UiTableView,每行都有标签,显示基础对象数组中项目属性的值。

http://localhost/domain_name/

class Things {
    var number: Double = 0
}

var things: [Things] = []

我想知道每次更改属性时告诉标签更新的最佳方法是什么。我知道我可以使用class thingsVC: UIViewController { @IBOutlet var thingsTableView: UITableView! // etc etc }

触发此操作

我应该使用代表吗?我应该使用NSNotificationCenter吗?我不知道如何从didSet()对象可靠地引用TableView。

更改可能发生在应用程序的任何地方和任何时间,但我总是需要使用数据更新相同的TableView。

由于

2 个答案:

答案 0 :(得分:1)

您有超过3个选项,我将介绍您最想要使用的选项。

  1. 使用KVO - >我个人认为这是最好的解决方案。
  2. 使用代表 - >这仍然是流行的解决方案,我建议在KVO之后。
  3. 使用通知 - >我不会这样做,一般情况下使用通知在Swift中做得不太好,如果你没有正确使用它们就会遇到麻烦。
  4. 使用RxSwift + RxCocoa或ReactiveCocoa - >如果您希望将整个应用程序设置为Reactive,这将是非常棒的,如果您订阅了大量更改,则应该考虑这些。
  5. 最终KVO获胜,因为如果你需要在应用程序的任何位置设置它,那就是你想要使用的东西。

答案 1 :(得分:0)

您不需要致电 NSNotificationCenter 或使用委托。您只能使用didSet和reloadData:

var things: [Things] = []
{
    didSet {
        tableView.reloadData()
    }
}