Swift:插座名称的字符串连接
Swift: String Concatenation for Outlet names
我希望减少代码中的行数,我有很多与其值相对应的标签名称。我想知道是否有一种方法可以在 for-in 循环或类似的东西中设置这些值。现在我正在努力寻找一种连接标签名称以使它们动态的方法。我不确定我是否能够在 Swift 中做到这一点,有什么想法吗?谢谢
这个代码
LabelGiraffe1.text = "This is Giraffe 1"
LabelGiraffe2.text = "This is Giraffe 2"
LabelGiraffe3.text = "This is Giraffe 3"
LabelGiraffe4.text = "This is Giraffe 4"
LabelGiraffe5.text = "This is Giraffe 5"
更干净的东西,比如...
for number in 1...5 {
LabelGiraffe + /(number).text = "This is Giraffe /(number)"
}
使用 IBOutletCollection
。这实际上就像将所有插座放入一个数组中(我相信这就是它在后台所做的)。然后您可以遍历它们,或按索引访问它们,就像您尝试做的那样。
这里有更多信息:http://nshipster.com/ibaction-iboutlet-iboutletcollection/
制作一个标签数组并覆盖它们:
let giraffeLabels = [LabelGiraffe1, LabelGiraffe2, LabelGiraffe3, LabelGiraffe4, LabelGiraffe5]
for (index, label) in enumerate(giraffeLabels) {
label.text = "This is Giraffe \(index + 1)"
}
您还可以将 giraffeLabels
作为视图控制器的存储或计算 属性。
我希望减少代码中的行数,我有很多与其值相对应的标签名称。我想知道是否有一种方法可以在 for-in 循环或类似的东西中设置这些值。现在我正在努力寻找一种连接标签名称以使它们动态的方法。我不确定我是否能够在 Swift 中做到这一点,有什么想法吗?谢谢
这个代码
LabelGiraffe1.text = "This is Giraffe 1"
LabelGiraffe2.text = "This is Giraffe 2"
LabelGiraffe3.text = "This is Giraffe 3"
LabelGiraffe4.text = "This is Giraffe 4"
LabelGiraffe5.text = "This is Giraffe 5"
更干净的东西,比如...
for number in 1...5 {
LabelGiraffe + /(number).text = "This is Giraffe /(number)"
}
使用 IBOutletCollection
。这实际上就像将所有插座放入一个数组中(我相信这就是它在后台所做的)。然后您可以遍历它们,或按索引访问它们,就像您尝试做的那样。
这里有更多信息:http://nshipster.com/ibaction-iboutlet-iboutletcollection/
制作一个标签数组并覆盖它们:
let giraffeLabels = [LabelGiraffe1, LabelGiraffe2, LabelGiraffe3, LabelGiraffe4, LabelGiraffe5]
for (index, label) in enumerate(giraffeLabels) {
label.text = "This is Giraffe \(index + 1)"
}
您还可以将 giraffeLabels
作为视图控制器的存储或计算 属性。