内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

如何获取UICollectionView的某个Cell

2018-06-08 19:49 出处:清屏网 人气: 评论(0

可能你会遇这种情况:collectionView每个cell是屏幕大小,然后上面添加了tableview,tableview可以上拉加载更多,当上拉加载完数据后,我们可以2种方式更新UI,如下

//第一种:简单粗暴
[self.collectionView reloadData];
//第二种: 获取cell,然后传值更新UI
GBPracticeRecordCollectionViewCell *cell = (GBPracticeRecordCollectionViewCell*)[self.collectionView 
cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]];

但有时候在加载过程中,你会左右滑动collectionview 使得当前加载数据的cell不在屏幕内,此时通过上面方法2是无法获取cell,通过debug可知为nil,那么有什么办法呢

继续往下看

我们可以先让collectionView滚动到目标cell处,然后当滚动结束时,在scrollView的代理方法中,来获取cell,传值更新UI

//滚到目标cell上
[self.collectionView selectItemAtIndexPath:
[NSIndexPath indexPathForItem:index inSection:0] 
animated:YES scrollPosition:UICollectionViewScrollPositionCenteredHorizontally];
_needOpenCellIndexPath = [NSIndexPath indexPathForItem:index inSection:0];
//获取目标cell
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView {
    
    if (_needOpenCellIndexPath) {
        GBPracticeRecordCollectionViewCell *cell = (GBPracticeRecordCollectionViewCell*)[self.collectionView cellForItemAtIndexPath:_needOpenCellIndexPath];
        //传值
        cell.practiceRecord = _practiceRecords[_needOpenCellIndexPath.item];
        //结束刷新
        [cell endRefreshing];
        _needOpenCellIndexPath = nil;
    }
}
分享给小伙伴们:
本文标签: UICollectionCell

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号