【发布时间】:2020-06-05 21:14:51
【问题描述】:
我正在观察 firebase 中的数据,当这些数据发生变化时,collectionview 重新加载它的数据,我从垂直堆栈视图中删除一个标签,我想在运行时在某些条件下再次将此标签添加到垂直堆栈视图,垂直stackview 是collectionview 单元格的一部分。
override func layoutSubviews() {
if(serviceUserCompany.text == ""){
detailsStackView.removeArrangedSubview(serviceUserCompany)
serviceUserCompany.isHidden = true
}
if(serviceUserCompany.text != "" && !detailsStackView.arrangedSubviews.contains(serviceUserCompany)){
detailsStackView.insertArrangedSubview(serviceUserCompany, at: 2)
}
}
【问题讨论】:
-
您的问题是什么?与其删除子视图,不如将其隐藏。如果标签是 collectionView 单元格的一部分,则将该代码放在 cellForItem 中。
-
正如 chedabob 所说,
viewDidLayoutSubviews不是执行此操作的正确位置。而且,仅供参考,如果您override任何这些与外观相关的方法,请谨慎调用superrendition。 -
顺便说一句,如果你要去
removeArrangedSubview并隐藏它,当它添加回来时,你大概想取消隐藏它。