UICollectionView:更新Section FooterTitles
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UICollectionView:更新Section FooterTitles相关的知识,希望对你有一定的参考价值。
我使用UICollectionView作为Messenger UI。部分页脚显示发送消息的时间。但是,我只想在超过15分钟前发送上一条消息时显示它。
因此,我希望每次发送邮件时刷新页脚。但是,如何刷新章节页脚标题?
我尝试了self.collectionView.reloadData()
,但它没有更新页脚(将它们设置为“”)。 (当我向上和向下滚动时,它们会消失,因此逻辑有效。)
你知道怎么刷新页脚标题吗?
假设您正在设置这样的collectionView
您正在使用默认流布局。所以你可以为页眉和页脚添加标签。在页脚标签中,将其标记设置为1001(或您喜欢的任何数字)。
标题的标识符是“标题”,页脚是“页脚”。 UICollectionElementKindSectionHeader在流布局类中定义(检查文档。)
现在你可以像这样重新加载页眉和页脚:
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView{
let cell = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: (kind == UICollectionElementKindSectionHeader ? "header": "footer"), for: indexPath)
// Configure the cell
return cell
}
当您尝试更改页脚中的标签内容时,您不需要刷新页脚。您可以在应用程序的任何位置调用以下内容。为方便起见,我将其称为单元格以运行测试。
override func collectionView(_ collectionView: UICollectionView, shouldSelectItemAt indexPath: IndexPath) -> Bool {
let footView = collectionView.supplementaryView(forElementKind: UICollectionElementKindSectionFooter, at: IndexPath.init(row: 0, section: 1))
if let label = footView?.viewWithTag(1001) as? UILabel{
label.text = "AnyThing"
}
这里我使用的是IndexPath.init(row:0,section:1),这是第二部分。现在你看到了结果。
这是一个最简单的例子。 CollectionView可能非常复杂,值得一本书用于各种应用程序和示例。希望这可以帮到你。
以上是关于UICollectionView:更新Section FooterTitles的主要内容,如果未能解决你的问题,请参考以下文章
tvOS 11 更新 UICollectionView 崩溃
UICollectionView 重新加载数据不会更新单元格