在 swift 中,如何在滚动视图的堆栈视图中使用 for 循环添加按钮?

In swift, how do you add button using a for loop in stack view in scroll view?

我分别在其中添加了两个滚动视图和两个垂直堆栈视图。约束已经设置好了。我已将两个堆栈视图连接为 ViewController.swift 中的出口集合。假设我有一个字符串数组,比如

我想使用 for 循环在顶部堆栈视图中添加几个按钮(与标签的长度相同)。我该怎么做呢?由于堆栈视图是滚动视图,我是否需要指定两个按钮之间的距离?

我的代码如下。

    @IBOutlet var topStackView: [UIStackView]!
    @IBOutlet var bottomStackView: [UIStackView]!
    @IBOutlet weak var enterItemTextField: UITextField!
    let labels = ["a", "b", "c", "d", "e"]


    override func viewDidLoad() {
        super.viewDidLoad()
        enterItemTextField.delegate = self

        var buttons = [UIButton()]
        for _ in 0..<labels.count {

            let button = UIButton(type: UIButton.ButtonType.system)
            # some operations on button
            buttons.append(button)
        }
        # what do I do here?

    }

堆栈视图调整位置的自由度较低。我已经删除了堆栈视图并直接将按钮放在滚动视图上。

之后你需要它
buttons.append(button)
topStackView.addArrangedView(button)

顺便说一句,对于单个项目,您不需要 collection 所以

@IBOutlet var topStackView: UIStackView!
@IBOutlet var bottomStackView: UIStackView!

而不是

@IBOutlet var topStackView: [UIStackView]!
@IBOutlet var bottomStackView: [UIStackView]!

Do I need to specify the distance between two buttons?

不,你不必这样做,但你可以这样做

topStackView.spacing = 20