首页 > 解决方案 > 从 UIStackView 获取 View 的索引

问题描述

我添加了 2 个stackview不同大小的视图。现在,当我单击任何视图的加号按钮时,我只想在其下方添加一个视图。

我通过以下方式获得视图:

let index = superView.subviews.index(of: view)

然后我在做:

superView.insertArrangedSubview(newView, index + 1)

但实际上它是在不同的位置添加新的视图。

所以如果我尝试获取索引,.subview.index那么它总是返回最后一个索引

标签: iosswiftuistackview

解决方案


和数组不必相同(因为堆栈视图可以有一个未“排列”的子视图)arrangedSubviewssubviews即使它们具有相同的元素,它们也不必处于相同的顺序。

所以:

if let index = stackView.arrangedSubviews.firstIndex(of: view) {
    stackView.insertArrangedSubview(newView, at: index + 1)
}

推荐阅读