当使用具有唯一 ReuseIdentifiers 的多个 UICollectionViews 时,我看到此错误弹出。在 ViewDidLoad 你想像这样注册每个 CollectionView 的重用标识符:
[_collectionView1 registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"collectionView1CellIdentifier"];
[_collectionView2 registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"collectionView2CellIdentifier"];
然后,当您到达“- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath”时,您要确保不要尝试将 collectionView1 的单元格设置为 collectionView2 的重用标识符,或者您会得到这个错误。
不要这样做:(或者collectionView2会看到错误的标识符并在看到它所期望的标识符之前抛出一个合适的)
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"collectionView1CellIdentifier" forIndexPath:indexPath];
if(collectionView != _collectionView1){
cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"collectionView2CellIdentifier" forIndexPath:indexPath];
}
cell.backgroundColor = [UIColor greenColor];
return cell;
这样做:
UICollectionViewCell *cell;
if(collectionView == _collectionView1){
cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"collectionView1CellIdentifier" forIndexPath:indexPath];
}else{
cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"collectionView2CellIdentifier" forIndexPath:indexPath];
}
cell.backgroundColor = [UIColor greenColor];
return cell;