Gen*_*ode 5 objective-c reload uicollectionview uicollectionreusableview
第一件事:
- 我不想重新加载整个 CollectionView。
- 我也不想重新加载该部分(因为它与 reloadData 相同,因为我的简历只有 1 个部分)。
我在补充视图中放置了一些控件,因为该视图充当标题视图。在某些情况下,我想根据需要隐藏/显示控件。为此,我需要重新加载补充视图,因为它的数据已经更新。
我尝试过的:
UICollectionViewLayoutInvalidationContext *layoutContext =
[[UICollectionViewLayoutInvalidationContext alloc] init];
[layoutContext invalidateSupplementaryElementsOfKind:UICollectionElementKindSectionHeader
atIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:0]]];
[[_collectionView collectionViewLayout] invalidateLayoutWithContext:layoutContext];
Run Code Online (Sandbox Code Playgroud)
当然是这次崩溃。代码看起来也不正确,但我不确定如何正确构造 UICollectionViewLayoutInvalidationContext 并告诉 collectionview 仅重新加载补充视图。
谢谢。
如果您只需要更新特定部分的标题视图,那么您可以执行类似以下操作:
if let header = collectionView.supplementaryView(forElementKind: UICollectionElementKindSectionHeader, at: IndexPath(item: 0, section: indexPath.section)) as? MyCollectionHeaderView {
// Do your stuff here
header.myLabel.isHidden = true // or whatever
}
Run Code Online (Sandbox Code Playgroud)
代码片段IndexPath(item: 0, section: indexPath.section)可能看起来有点奇怪,但事实证明supplementaryView仅在该部分的第一项上返回。
小智 -1
我不确定您如何对集合视图的单元格进行分组。
最简单的解决方案是使用以下命令重新加载特定单元格:
- (void)reloadItemsAtIndexPaths:(NSArray *)indexPaths
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2777 次 |
| 最近记录: |