我在stackview中添加了2个不同大小的视图。现在,当我单击任意视图的加号按钮时,我只想在该视图的正下方添加一个视图。
我正在通过
查看let index = superView.subviews.index(of: view)
然后我是
superView.insertArrangedSubview(newView, index + 1)
但实际上它是在不同位置添加新视图。因此,如果我尝试通过.subview.index获取索引,那么它总是返回最后一个索引
答案 0 :(得分:4)
arrangedSubviews
和subviews
数组不必相同(因为堆栈视图可以具有未“排列”的子视图)。即使它们具有相同的元素,也不必具有相同的顺序。
所以:
if let index = stackView.arrangedSubviews.firstIndex(of: view) {
stackView.insertArrangedSubview(newView, at: index + 1)
}