发生了什么
目前我有一个应用程序使用两个UICollectionViews
里面一个UITableView
。通过这种方式,我创建了一个看起来像 Pulse News 的应用程序。我的问题是,有时第 6 行和第 11 行完全消失,在本应是单元格的位置留下空白。我实际上并不介意,如果所有的细胞都是这样的(这样我就可以假设我没有正确地做事),但问题是,只是发生在那些特定的细胞上。
我的理论
第 6 行和第 11 行是我开始滚动时出现的行,因此默认情况下我能够看到 5 个单元格,当我进行第一次水平滚动时,会出现第 6 行(有时是空白)。
我拥有的
我目前唯一在做的事情是:
[self.collectionView registerNib:[UINib nibWithNibName:CELL_NIB_NAME bundle:nil] forCellWithReuseIdentifier:CELL_IDENTIFIER];
On the viewDidLoad
。关于单元格的创建:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CELL_IDENTIFIER forIndexPath:indexPath];
NSMutableDictionary *dictionary = [self.DataSource objectAtIndex:[indexPath row]];
[cell buildViewWithDictionary:dictionary withReferenceParent:self.referenceViewController];
return cell;
}
因此,据我所知,这里没有发生什么奇怪的事情。我虽然数据源(一个虚拟 JSON 文件)有问题,但有时它工作正常并且单元格显示,所以我猜从那部分来看是可以的。
所以我的“问题”:有人知道发生了什么事吗?我不太愿意说这是 iOS 的 bug,但我想不出其他的了。
Edit 1.0
令人惊奇的是这个方法
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath;
是从indexPath
[0,4]到[0,6]而不计算[0,5]。我第一次在 iOS 中看到这种情况发生。
Edit 2.0
我已经改变了创建单元格的方式,我使用旧的方式而不是出列:
NSArray *nib = [[NSBundle mainBundle] loadNibNamed:CELL_NIB_NAME owner:self options:nil];
MyCell *cell = (MyCell *)[nib objectAtIndex:0];
还是同样的悲惨结果。