Вставить несколько одинаковых объектов в одном стеке - PullRequest
0 голосов
/ 21 октября 2018

Я хотел бы вставить в один и тот же стековый вид четыре объекта (stackview1, stackview2, stackview3, stackview3), которые задаются одной и той же функцией setupIngredientStackView().Но когда я запускаю свой код, симулятор отображает только один объект.Остальные заменены пробелами.

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 голосов
/ 21 октября 2018

Проблема в содержимом дочерних стековых представлений.UIViews являются ссылочными объектами, поэтому, если вы передаете свой массив [ingredient, quantité, prix] нескольким представлениям стека, вы передаете одни и те же объекты представления каждый раз, что не работает.Только одно из этих представлений стека будет иметь содержимое;остальное будет пустым.

Вы не можете использовать один и тот же объект просмотра в нескольких местах на экране одновременно.Вам нужно изменить функцию setupIngredientStackView(), чтобы создавать новые объекты ингредиентов для каждого создаваемого ими стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...