我在我的 Storyboard (iPad) 中定义了一个包含 的视图UICollectionView
,在视图的底部还有一个UIToolbar
. 在UICollectionView
我添加了一个UICollectionViewCell
(由一个iPadCellCollectionViewCell
类实现),其中包含另一个视图,即 Core-Plot Graph(一个CPTGraphHostingView
类)。
我有一个名为 X 的类,它实现了UICollectionViewDelegate
and UICollectionViewDataSource
。
在 X 类中,我为视图的每个单元格(在 中ViewDidLoad
)构建了 Core-Plot 图表,并且我有以下代码将图表链接到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 中添加CPTGraphHostingView
,UICollectionViewCell
我自己构建它,前面的代码变为:
- (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;
}
使用此代码,一切正常。是否有任何解释为什么当我在 IB 中添加时它CPTGraphHostingView
不起作用UICollectionViewCell
?
每次调用该方法时调用“addSubview”是否有问题?没有内存泄漏?