ios - 在同一个堆栈 View 中插入几个相同的对象

标签 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

}

最佳答案

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

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

关于ios - 在同一个堆栈 View 中插入几个相同的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52918315/

相关文章:

ios - 如何使用 NSURLSession 复制 POST 登录

ios - 在 Swift 中将对象从一个类移动到另一个类

iphone - 将触摸事件传递给 View Controller 的所有 subview

iphone - removeFromSuperview 导致我的应用程序崩溃

ios - 如何垂直居中 UICollectionView 内容

iphone - MKMapView 到 UIImage iOS 7

ios - UITapGestureRecognizer 不响应父 View 外的 subview 区域

ios - 更新到 Xcode 9 有错误

ios - 将当前用户存储在核心数据中

iphone - 仅对 subview 启用 UserInteraction