我根据数组中的内容在屏幕上添加一组标签。现在,如果我修改数组,更新标签的最佳方法是什么?
在所有当前标签上调用removeFromSuperView
,然后根据更新的数组再次添加标签?
我不想重绘整个视图,因为这会重新加载WKWebView中的网页。
override func viewDidLoad() {
super.viewDidLoad()
// initialise a WKWebView and some others here
var label: UILabel
for i in 0..<myArray.count {
label = UILabel(frame: ...)
scrollView.addSubview(label)
}
}
答案 0 :(得分:1)
您可以在视图控制器中保留数组中标签的引用,并在修改数据数组后,根据需要更新标签:
var labels : [UILabel] = []
override func viewDidLoad() {
super.viewDidLoad()
// initialise a WKWebView and some others here
var label: UILabel!
for i in 0..<myArray.count {
label = UILabel(frame: ...)
scrollView.addSubview(label)
//Add your labels to the array here.
labels.append(label)
}
}
然后,一旦您需要根据数组更新标签,您只需使用标签数组:
func updateMyLabels() {
var label: UILabel!
for i in 0..<myArray.count {
label = labels[i]
//Then you update your label as needed here
label.frame = ...
label.text = ...
//If you need the Label UI to update you can call layout if needed
label.layoutIfNeeded()
}
}
答案 1 :(得分:0)
为每个标签指定唯一标记的最佳方法,以及修改数组时仅更新受影响的标签。你可以在循环内完成。
为此,在创建标签时,您可以根据数组索引给出标签。当你的数组被修改时,你应该有一些标志来修改这个特定的数据,你应该遍历它并且只更新那个标签。您可以通过使用数组中该项的索引来获取特定标签。