UICollectionViewCell 将被显示/被显示?
Posted
技术标签:
【中文标题】UICollectionViewCell 将被显示/被显示?【英文标题】:UICollectionViewCell will be displayed/ was displayed? 【发布时间】:2012-10-01 21:32:53 【问题描述】:很简单的问题。
是否有通知或委托类型的方法来判断何时显示 UICollectionViewCell 对象?
【问题讨论】:
【参考方案1】:对于 ios 8 及更高版本,您可以使用 willDisplayCell 的 UICollectionViewDelegate
- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath
【讨论】:
iOS 8 是当前版本,我将其标记为正确。谢谢! 这实际上并不能说明它是否显示在屏幕上。单元格也可以添加到屏幕外。来自文档: 集合视图在将单元格添加到其内容之前调用此方法。使用此方法检测单元格添加,而不是监控单元格本身以查看它何时出现。 这对我有用。当我滚动它并在视图中时,每次单元格返回视图时都会调用它...运行 iOS 13 在单元格显示之前调用,而不是在显示之后调用。【参考方案2】:意志:
-[<UICollectionViewDataSource> collectionView:cellForItemAtIndexPath:]
做过:
-[<UICollectionViewDelegate> collectionView:didEndDisplayingCell:forItemAtIndexPath:]
【讨论】:
@Dave DeLong:didEndDisplayingCell 指的是从集合视图中删除的单元格。来自 Apple 文档“告诉代理指定的单元格已从集合视图中删除。” @titaniumdecoy:实际上collectionView:cellForItemAtIndexPath:
会被调用,即使某些单元格被回收。由您决定是否要重复使用回收的单元格或在此方法中创建一个新单元格。以上是关于UICollectionViewCell 将被显示/被显示?的主要内容,如果未能解决你的问题,请参考以下文章
检测是不是正在显示 UICollectionViewCell