在同一stackview中插入几个相同的对象

时间:2018-10-21 18:03:02

标签: ios swift subview uistackview

我想在同一stackview中插入由同一函数setupIngredientStackView()赋予的四个对象(stackview1,stackview2,stackview3,stackview3)。但是当我运行代码时,模拟器仅显示一个对象。其他的都用空格代替。

fileprivate func setupIngredientStackView() -> UIStackView {
    let stackView = UIStackView(arrangedSubviews: [ingredient, quantité, prix])
    stackView.distribution = .fillEqually
    stackView.axis = .horizontal
    return stackView
}

fileprivate func setupPageStackView(){
    let stackview1 = setupIngredientStackView()
    let stackview2 = setupIngredientStackView()
    let stackview3 = setupIngredientStackView()
    let stackview4 = setupIngredientStackView()
    let stackView = UIStackView(arrangedSubviews: [NomDuPlat,titleIgrendient,stackview1 ,stackview2 ,stackview3 ,stackview4 , etiquettePrixTotal,date,nombreDePersonne])

    stackView.distribution = .fillEqually
    stackView.axis = .vertical
    view.addSubview(stackView)
    stackView.translatesAutoresizingMaskIntoConstraints = false
    stackView.topAnchor.constraint(equalTo: view.topAnchor, constant: 80).isActive = true
    stackView.leftAnchor.constraint(equalTo: view.leftAnchor, constant: 20).isActive = true
    stackView.rightAnchor.constraint(equalTo: view.rightAnchor, constant: -20).isActive = true

}

1 个答案:

答案 0 :(得分:1)

问题是子堆栈视图的内容。 UIView是引用对象,因此,如果将数组[ingredient, quantité, prix]传递给多个堆栈视图,则每次都传递相同的视图对象,这是行不通的。这些堆栈视图中只有一个具有内容。其余的将为空。

您不能同时在屏幕上的多个位置使用同一视图对象。您需要更改setupIngredientStackView()函数以为其创建的每个堆栈视图创建新的配料对象。