具有循环的重复UILabel的更新值
问题描述:
我有标签可以保存数组的名称和值items = [MyItems]()
。凡具有循环的重复UILabel的更新值
struct MyItems {
name: String!
value: Int!
}
标签是titleLabel1
和valueLabel1
。我有这些标签中的6个从具有多于6个值的数组中取值。
目前我使用的是for
循环,如:
var items = [MyItems]()
func viewDidLoad() {
super.viewDidLoad()
items = loadItemsFromAPI()
populateFields()
}
func populateFields() {
for var i = 0; i < 6 && i < items.count; i++ {
switch i {
case 0:
titleLabel1.text = items[i].name
valueLabel1.text = "items[i].value"
case 1:
titleLabel1.text = items[i].name
valueLabel1.text = "items[i].value"
case 2:
titleLabel1.text = items[i].name
valueLabel1.text = "items[i].value"
case 3:
titleLabel1.text = items[i].name
valueLabel1.text = "items[i].value"
case 4:
titleLabel1.text = items[i].name
valueLabel1.text = "items[i].value"
case 5:
titleLabel1.text = items[i].name
valueLabel1.text = "items[i].value"
default:
print("Unexpected value encounteredValue: \(i)")
break
}
}
}
我的问题是有没有什么办法来遍历所有的标签分配的值,而不是这个漫长的路?
像
for var i = 0; i < 6; i++ {
titleLabel + "i-1".text = items[i].name
}
从理论上讲,这就是我心目中,只有当它有可能有一个短暂的更干净的代码。
答
有一个数组标签:
let titleCollection = [titleLabel1, titleLabel2, titleLabel3, titleLabel4, titleLabel5, titleLabel6]
let valueCollection = [valueLabel1, valueLabel2, valueLabel3, valueLabel4, valueLabel5, valueLabel6]
使用zip包广告d文本安全标签:
zip(titleCollection, items).forEach { $0.0.text = $0.1.name }
zip(valueCollection, items).forEach { $0.0.text = String($0.1.value) }
您应该使用的@IBOutlet
集合或在阵列中的文本字段。我相信有一种方法可以使用String
来访问您的属性,但从我读过的内容来看,它不可靠或不可用,因此我不建议您这样做。如果我错了,请纠正我。
+0
当我问这个问题时,我非常怀疑,但我只是说,所以我永远不会惊讶于我。这完美地工作。我有不同的UILabel网点,我想分配不同的值,这就是为什么@GabrielJones的建议不适用于我,即使它可能适用于他建议的场景。谢谢。 – tew
答
如果你经历了许多标签试图循环,并改变它们的值,你可以试试这个:
var i = 0
for view in self.view.subviews {
if view is UILabel {
titleLabel.text = items[i]
valueLabel.text = items[i]
i++
}
}
或者,如果你想快速更新1个标签的文本一堆倍,你应该我们一个NSTimer:
NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: "update", userInfo: nil, repeats: true)
var i = 0
func update() {
labels.text = items[i]
i++
}
我想你想为每个案例使用不同的标签而不是相同的? – Eendje
你想让每个案例有不同的标签吗?还是你想每秒更新标签内容? – brimstone