Swift 快速更改每个循环中的不同标签labelData

Swift 快速更改每个循环中的不同标签labelData,swift,tags,uitextfield,uilabel,simplify,Swift,Tags,Uitextfield,Uilabel,Simplify,所以我想将这段代码简化为一个简单的for循环。 但是UITextFields和uilabel给我带来了一些困难 @IBOutlet var thingsIUse: UITextField! @IBOutlet var orThis: UILabel! saveProgress(year: year, season: season, day: "1", value: "\(Int(day1new.text!)! + Int(day1newExtra.text!)!)")

所以我想将这段代码简化为一个简单的for循环。 但是UITextFields和uilabel给我带来了一些困难

    @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/故事板,通过单击收集名称旁边的小“+”并将其拖动到各种标签,为标签添加引用。由于这是一个集合,您可以像这样拖动到许多标签上,只需确保按照您希望更新标签的顺序添加标签即可

另一种解决方法是创建要在运行时动态更新的标签数组,如下所示:

let labelsToUpdate: [UILabel] = [day1new,day2new,day3new,day4new,day5new,day6new]
for k in 0...5 {
    let day = "\(k+1)"
    let label = labelsToUpdate[k]
    ...
}
为了保持代码干净,您还可以进行其他一些优化,但这将是实现所需功能的良好开端


祝你好运

您需要将标签/文本字段放在一个数组中,而不是每个字段都有一个单独的属性。Works!设法简化了应用程序的第一页。从578行代码到不到200行,谢谢。祝您愉快,先生!