从UIStackView中获取视图的索引

8

我已经在stackview中添加了两个大小不同的视图。现在,当我点击任何视图的加号按钮时,我只想在该视图下面添加一个视图。

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

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

然后我在进行:

superView.insertArrangedSubview(newView, index + 1)

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

因此,如果我尝试通过 .subview.index 获取索引,则始终返回最后一个索引。

1个回答

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

所以:

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

1
firstIndex(of:) 是针对 Xcode 10 的,尝试使用 **index(of:**。 - Shehata Gamal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接