将 UICollectionViewCell 与 IBOutlet 一起使用

问题描述 投票:0回答:1

我想知道是否可以将 UICollectionViewCell 与 IBOutlet 一起使用?因为我总是收到这个错误

*** 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因:“从 -collectionView:cellForItemAtIndexPath: 返回的单元格未通过调用 -dequeueReusableCellWithReuseIdentifier:forIndexPath: 在索引路径中检索到

下面是我的代码:

@property (nonatomic, strong) NSMutableArray *cellArray;
@property (nonatomic, strong) IBOutlet UICollectionViewCell *sort1Cell;
@property (nonatomic, strong) IBOutlet UICollectionViewCell *sort2Cell;
@property (nonatomic, strong) IBOutlet UICollectionViewCell *sort3Cell;
@property (nonatomic, strong) IBOutlet UICollectionViewCell *sort4Cell;

- (void)viewDidLoad {
    [super viewDidLoad];

    self.cellArray = [NSMutableArray array];
    [cellArray addObject:sort1Cell];
    [cellArray addObject:sort2Cell];
    [cellArray addObject:sort3Cell];
    [cellArray addObject:sort4Cell];
    [theCollectionView reloadData];
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewCell *cell = [cellArray objectAtIndex:indexPath.row];
    return cell;  //THE ERROR IS FROM HERE
}

或者也许我错过了什么?

ios objective-c uicollectionview uicollectionviewcell
1个回答
0
投票

我想知道是否可以将 UICollectionViewCell 与 IBOutlet 一起使用

不,这是不可能的。 (即使是,也不要这样做。)细胞是重复使用;它们在集合视图中没有永久存在。您永远不知道在给定的部分/项目位置将使用什么单元格对象。因此,每次调用 cellForItemAtIndexPath 时,您都必须使单元

出列

有多种方法可以在运行时获取对集合视图中实际存在的单元格的引用。 (尽管在很多情况下,即使这样做也被认为是一种坏气味。)

© www.soinside.com 2019 - 2024. All rights reserved.