【问题标题】:update vertical stack view contents更新垂直堆栈视图内容
【发布时间】: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 任何这些与外观相关的方法,请谨慎调用 super rendition。
  • 顺便说一句,如果你要去removeArrangedSubview并隐藏它,当它添加回来时,你大概想取消隐藏它。

标签: ios swift stackview


【解决方案1】:

隐藏它而不是删除它。它将降低到 0 高度,并且其他视图将向上移动以取代它。

也不要在layoutSubviews 中更新您的观点。它会导致各种奇怪的问题。

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多