如何将数组中的数组从一个结构传递到类Swift中的按钮数组中的标题

问题描述 投票:0回答:1

我不熟悉编码,对于我的第一个应用程序,我正在尝试创建一个结构,该结构存储字符串数组,这些字符串数组可以加载到我的UIButton Array中以设置为各自的标题。我创建了一个名为ToDo的结构,以尝试遵循应用程序中的MVC结构。我试图在名为labelArray的结构中创建一个字符串数组,并创建一个函数,该函数在名为getLabelArray的视图控制器中调用该函数时会返回该数组中项目的字符串,我希望将索引计数的整数接受到数组中UI按钮。我要实现的目标是在视图加载之前为数组中的按钮设置占位符标题。欢迎任何帮助!我已经在代码中附加了注释。谢谢!

import UIKit

class ViewController: UIViewController {

//Instantiates ToDo Class Object

var labelArray = ToDo()

//Main Score Label

@IBOutlet weak var scoreLabel: UILabel!

//Array of TodoItems To Be Filled By ToDo Class

@IBOutlet var toDoItemArray: [UIButton]!

//Array of Scores To Be Filled By ToDo Class

@IBOutlet var scoreArray: [UILabel]!
override func viewDidLoad() {
    super.viewDidLoad()

     /* For every item in toDoItemArray will set text of each UIButton label to a 
     string in labelArray from ToDo struct */   

   for i in 0...toDoItemArray.count {
                        func updateTextInArray(){
                            toDoItemArray[i].setTitle("\(labelArray.getLabelArray(index: i))", for: UIControl.State.normal)

            }

        }

    }
}





// ToDoStruct

import Foundation
    struct ToDo {

    var task1 = "Cooking"
    var task2 = "Cleaning"
    var task3 = "Walking Dog"

    lazy var labelArray = [task1,task2,task3]

    mutating func getLabelArray (index: Int) -> String {

    return labelArray[index]

    }
arrays swift uibutton
1个回答
0
投票

以下内容正确设置了UIButton的标题。

override func viewDidLoad() {
    super.viewDidLoad()

    for i in 0..<toDoItemArray.count {
        toDoItemArray[i].setTitle(
            "\(labelArray.getLabelArray(index: i))",
            for: .normal
        )
    }
}

但是,您确实不需要不必要的getLabelArray。如果希望labelArray为只读属性,请使用private(set)关键字:

private(set) lazy var labelArray = [task1, task2, task3]

此外,通过重命名var toDo = ToDo(),您可以整理for循环:

for (i, label) in toDo.labelArray.enumerated() {
    toDoItemArray[i].setTitle("\(label)", for: .normal)
}
© www.soinside.com 2019 - 2024. All rights reserved.