Arrays 如何从Swift中的数组以编程方式在堆栈中创建按钮
我是Swift新手,我想知道如何从数组中获取一些值,并将它们转换为堆栈中的按钮。我有一个狗和他们的信息数组。我希望按钮显示每只狗的名字。狗的数量可以改变,所以我需要改变堆栈以反映数组中的内容。我真的迷路了,我知道我需要将此代码添加到视图控制器,但我找不到类似的代码 这是我的阵列:Arrays 如何从Swift中的数组以编程方式在堆栈中创建按钮,arrays,swift,Arrays,Swift,我是Swift新手,我想知道如何从数组中获取一些值,并将它们转换为堆栈中的按钮。我有一个狗和他们的信息数组。我希望按钮显示每只狗的名字。狗的数量可以改变,所以我需要改变堆栈以反映数组中的内容。我真的迷路了,我知道我需要将此代码添加到视图控制器,但我找不到类似的代码 这是我的阵列: var myDogs = [ Dog(name: "Saleks", gender: "Male", speed: 50), Dog(name:
var myDogs = [
Dog(name: "Saleks", gender: "Male", speed: 50),
Dog(name: "Balto", gender: "Male", speed: 70),
Dog(name: "Mila", gender: "Female", speed: 20)
]
这是我的viewController:
@IBOutlet weak var buttonsStack: UIStackView!
override func viewDidLoad() {
super.viewDidLoad()
for Dog in myDogs {
print("\(Dog.name)")
}
//将新狗添加到阵列中
@IBAction func buyDogButton(_ sender: UIButton) {
func buyDog() {
myDogs.append(Dog(name: "Dogname", gender: "female", speed: 20))
}
我会这样做:
- 创建stackView,如下所述:
- 但不是图像或标签,而是创建按钮
您可能希望按钮具有公共宽度,然后在创建按钮时设置其边框。搜索始终是一个选项,这是否回答了您的问题?根据列表中狗的最大数量,单元格中带有按钮的表格也可能是一个选项。
var myDogs = [
Dog(name: "Saleks", gender: "Male", speed: 50),
Dog(name: "Balto", gender: "Male", speed: 70),
Dog(name: "Mila", gender: "Female", speed: 20)
]
let stackView = UIStackView(frame: CGRect(x: 40, y: 100, width: 60, height: 100))
stackView.backgroundColor = .red
stackView.axis = NSLayoutConstraint.Axis.vertical
stackView.distribution = UIStackView.Distribution.equalSpacing
stackView.alignment = UIStackView.Alignment.center
stackView.spacing = 16.0
for dog in myDogs {
let button = UIButton() // Need to set the IBAction
button.setTitleColor(.blue, for: UIControl.State.normal)
button.setTitle(dog.name, for: UIControl.State.normal) // "Click"
button.backgroundColor = .red
stackView.addArrangedSubview(button)
}
stackView.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(stackView)
//Constraints
stackView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
stackView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true