Swift 在每个循环中更改不同的标签 labelData
Swift changing different labels labelData in every loop
所以我想将这段代码简化为一个简单的 for 循环。
但是 UITextFields 和 UILabels 给我带来了一些困难。
@IBOutlet var thingsIUse: UITextField!
@IBOutlet var orThis: UILabel!
saveProgress(year: year, season: season, day: "1", value: "\(Int(day1new.text!)! + Int(day1newExtra.text!)!)")
saveProgress(year: year, season: season, day: "2", value: "\(Int(day2new.text!)! + Int(day2newExtra.text!)!)")
saveProgress(year: year, season: season, day: "3", value: "\(Int(day3new.text!)! + Int(day3newExtra.text!)!)")
saveProgress(year: year, season: season, day: "4", value: "\(Int(day4new.text!)! + Int(day4newExtra.text!)!)")
saveProgress(year: year, season: season, day: "5", value: "\(Int(day5new.text!)! + Int(day5newExtra.text!)!)")
saveProgress(year: year, season: season, day: "6", value: "\(Int(day6new.text!)! + Int(day6newExtra.text!)!)")
saveProgress(year: year, season: season, day: "1Taki", value: day1new.text!)
saveProgress(year: year, season: season, day: "2Taki", value: day2new.text!)
saveProgress(year: year, season: season, day: "3Taki", value: day3new.text!)
saveProgress(year: year, season: season, day: "4Taki", value: day4new.text!)
saveProgress(year: year, season: season, day: "5Taki", value: day5new.text!)
saveProgress(year: year, season: season, day: "6Taki", value: day6new.text!)
对于这样的事情...
for k in 1...10{
saveProgress(year: year, season: season, day: "\(k)", value: "\(Int(day\(k)new.text!)! + Int(day\(k)newExtra.text!)!)")
saveProgress(year: year, season: season, day: "\(k)Taki", value: day\(k)new.text!)
}
有什么建议吗?
您可以通过几种方式解决这个问题。一种是使用 IBOutlet 集合。在 swift 中,您将它们定义为:
@IBOutlet var dayLabels: [UILabel]!
然后确保您进入 Xib/Storyboard 并通过单击收集名称旁边的小“+”并将其拖动到各种标签来添加对标签的引用。由于这是一个集合,您可以像这样拖动到许多标签,只需确保按照您希望它们更新的顺序添加它们。
解决此问题的另一种方法是创建要在运行时动态更新的标签数组,如下所示:
let labelsToUpdate: [UILabel] = [day1new,day2new,day3new,day4new,day5new,day6new]
for k in 0...5 {
let day = "\(k+1)"
let label = labelsToUpdate[k]
...
}
您还可以进行其他一些优化来保持代码整洁,但这将是实现您想要的目标的良好开端。
祝你好运!
所以我想将这段代码简化为一个简单的 for 循环。 但是 UITextFields 和 UILabels 给我带来了一些困难。
@IBOutlet var thingsIUse: UITextField!
@IBOutlet var orThis: UILabel!
saveProgress(year: year, season: season, day: "1", value: "\(Int(day1new.text!)! + Int(day1newExtra.text!)!)")
saveProgress(year: year, season: season, day: "2", value: "\(Int(day2new.text!)! + Int(day2newExtra.text!)!)")
saveProgress(year: year, season: season, day: "3", value: "\(Int(day3new.text!)! + Int(day3newExtra.text!)!)")
saveProgress(year: year, season: season, day: "4", value: "\(Int(day4new.text!)! + Int(day4newExtra.text!)!)")
saveProgress(year: year, season: season, day: "5", value: "\(Int(day5new.text!)! + Int(day5newExtra.text!)!)")
saveProgress(year: year, season: season, day: "6", value: "\(Int(day6new.text!)! + Int(day6newExtra.text!)!)")
saveProgress(year: year, season: season, day: "1Taki", value: day1new.text!)
saveProgress(year: year, season: season, day: "2Taki", value: day2new.text!)
saveProgress(year: year, season: season, day: "3Taki", value: day3new.text!)
saveProgress(year: year, season: season, day: "4Taki", value: day4new.text!)
saveProgress(year: year, season: season, day: "5Taki", value: day5new.text!)
saveProgress(year: year, season: season, day: "6Taki", value: day6new.text!)
对于这样的事情...
for k in 1...10{
saveProgress(year: year, season: season, day: "\(k)", value: "\(Int(day\(k)new.text!)! + Int(day\(k)newExtra.text!)!)")
saveProgress(year: year, season: season, day: "\(k)Taki", value: day\(k)new.text!)
}
有什么建议吗?
您可以通过几种方式解决这个问题。一种是使用 IBOutlet 集合。在 swift 中,您将它们定义为:
@IBOutlet var dayLabels: [UILabel]!
然后确保您进入 Xib/Storyboard 并通过单击收集名称旁边的小“+”并将其拖动到各种标签来添加对标签的引用。由于这是一个集合,您可以像这样拖动到许多标签,只需确保按照您希望它们更新的顺序添加它们。
解决此问题的另一种方法是创建要在运行时动态更新的标签数组,如下所示:
let labelsToUpdate: [UILabel] = [day1new,day2new,day3new,day4new,day5new,day6new]
for k in 0...5 {
let day = "\(k+1)"
let label = labelsToUpdate[k]
...
}
您还可以进行其他一些优化来保持代码整洁,但这将是实现您想要的目标的良好开端。
祝你好运!