ios – UICollectionView的单元格在滚动后不会始终刷新

前端之家收集整理的这篇文章主要介绍了ios – UICollectionView的单元格在滚动后不会始终刷新前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在我的故事板(iPad)中定义了一个包含UICollectionView的视图,在视图的底部还有一个UIToolbar.
在UICollectionView中,我添加了一个UICollectionViewCell(由iPadCellCollectionViewCell类实现),其中包含另一个视图,即Core-Plot Graph(CPTGraphHostingView类).

我有一个名为X的类来实现UICollectionViewDelegate和UICollectionViewDataSource.

在类X中,我构建了我的视图的每个单元格(在ViewDidLoad中)Core-Plot Graph,并且我有以下代码将图形链接到UICollectionViewCell的单元格

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
static NSString* cellId = @"ChartCollectionId"; 

iPadCellCollectionViewCell* cell = [self.theCollectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];

MyChart* chart = [_charts objectAtIndex:indexPath.row];

cell.hostingView.hostedGraph = chart.barChart;

return cell;

}

它的工作正常,我的所有图形都正确显示在屏幕上.当用户滚动视图时,会出现此问题,然后一个或多个单元格变为“空白”.我真的不明白为什么

我找到了一个解决方法,而不是在Interface Builder中的UICollectionViewCell中添加CPTGraphHostingView,我自己构建并且之前的代码变成:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
static NSString* cellId = @"ChartCollectionId"; 

iPadCellCollectionViewCell* cell = [self.theCollectionView dequeueReusableCellWithReuseIdentifier:cellId forIndexPath:indexPath];


[cell.contentView addSubview:[_hostingViews objectAtIndex:indexPath.row]];

return cell;

}

有了这个代码,一切都正常.有没有任何解释为什么当我在IBIC中添加CPTGraphHostingView在UICollectionViewCell不起作用?

每次调用方法调用“addSubview”是一个问题吗?没有内存泄漏?

解决方法

在使用sectionInsets时,这似乎是UICollectionView中的一个错误.
细胞不会看不见,有时在快速滚动时,它们被错放在界限之外.

所以如果你通常每行有3个项目,你会得到一行中的第四个项目,但在下一行的第一个位置没有任何项目.

如果将UICollectionView设置为不剪辑到边界,并将其移动到UI的顶部,
你可能会看到这个对齐的单元格.

我的解决方案到目前为止还没有使用sectionInsets,并且通过在section标题中使用contentInset和一些空格来包围它.

我也在Twitter上发现了一些其他的人,同样的问题.还有一个关于它的错误报告:12353513

猜你在找的iOS相关文章