Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何从Swift中的数组以编程方式在堆栈中创建按钮_Arrays_Swift - Fatal编程技术网

Arrays 如何从Swift中的数组以编程方式在堆栈中创建按钮

Arrays 如何从Swift中的数组以编程方式在堆栈中创建按钮,arrays,swift,Arrays,Swift,我是Swift新手,我想知道如何从数组中获取一些值,并将它们转换为堆栈中的按钮。我有一个狗和他们的信息数组。我希望按钮显示每只狗的名字。狗的数量可以改变,所以我需要改变堆栈以反映数组中的内容。我真的迷路了,我知道我需要将此代码添加到视图控制器,但我找不到类似的代码 这是我的阵列: var myDogs = [ Dog(name: "Saleks", gender: "Male", speed: 50), Dog(name:

我是Swift新手,我想知道如何从数组中获取一些值,并将它们转换为堆栈中的按钮。我有一个狗和他们的信息数组。我希望按钮显示每只狗的名字。狗的数量可以改变,所以我需要改变堆栈以反映数组中的内容。我真的迷路了,我知道我需要将此代码添加到视图控制器,但我找不到类似的代码

这是我的阵列:

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,如下所述:

  • 但不是图像或标签,而是创建按钮

因此,代码如下所示(在DidLoad视图中):

我将背景色设置为红色,使按钮非常可见
您可能希望按钮具有公共宽度,然后在创建按钮时设置其边框。

搜索始终是一个选项,这是否回答了您的问题?根据列表中狗的最大数量,单元格中带有按钮的表格也可能是一个选项。
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