gpt4 book ai didi

swift - viewForSupplementaryElementOfKind 在 Collection View 滚动之前不会设置标签文本

转载 作者:行者123 更新时间:2023-12-03 20:54:50 27 4
gpt4 key购买 nike

我正在使用 viewForSupplementaryElementOfKind在我的收藏 View 中生成标题。

标题 (SectionHeader) 是 Storyboard 中的部分标题附件,仅包含 1 个 socket 。

class SectionHeader: UICollectionReusableView {
@IBOutlet weak var sectionHeaderlabel: UILabel!
}

这是我对 viewForSupplementaryElementOfKind 的实现
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind:
String, at indexPath: IndexPath) -> UICollectionReusableView {

print("SECTION TITLE (brand of bindings) --------> \(sectionTitle)")

if let sectionHeader = allCollectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "bindingsID", for: indexPath) as? SectionHeader{
sectionHeader.sectionHeaderlabel.text = "Select \(sectionTitle)"
return sectionHeader
}
return UICollectionReusableView()

}

sectionTitle 通过 segue 设置。

问题是当这个 View Controller 加载时,标题显示为“选择”

当我将标题滚动出屏幕,然后返回屏幕时,标题会正确显示: “选择伯顿绑定(bind)”

我测试了 sectionTitle在 viewWillAppear 中,并打印了正确的数据。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("viewWillAppear ----- \(sectionTitle)")
}

(打印 viewWillAppear ----- Burton Bindings )

我想我的问题是由于 viewForSupplementaryElementOfKind 的生命周期,以及何时调用它?

如何在 VC 加载时显示部分标题,而不是在屏幕上滚动标题以使其显示?

最佳答案

我看到了两种可能的替代方案(如果我首先正确理解了您的用例,则更可取)。

1) 提供sectionTitle在 View Controller 实例化(即在加载 View 之前)

2)在出现之前重建部分布局(当你的标题可用时) - 这个很重

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("viewWillAppear ----- \(sectionTitle)")

// as it is available here force rebuild sections
self.collectionView.collectionViewLayout.invalidateLayout()
}

关于swift - viewForSupplementaryElementOfKind 在 Collection View 滚动之前不会设置标签文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61312591/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com