我在我的故事板(iPad)中定义了一个包含UICollectionView的视图,在视图的底部还有一个UIToolbar.
在UICollectionView中,我添加了一个UICollectionViewCell(由iPadCellCollectionViewCell类实现),其中包含另一个视图,即core-plot Graph(CPTGraphHostingView类).
在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