0

我目前正在对 UICollectionViewCell 进行子类化,并让它在数组中加载单元格(下面是 collectionViewCell.m 中的代码):

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        NSArray *cellArray = [[NSBundle mainBundle] loadNibNamed:@"insightCell" owner:self options:nil];
NSLog (@"NSArray cellArray %i", [cellArray count]);
 if ([cellArray count] < 1) {
            return nil;
        }
        if (![[cellArray objectAtIndex:0] isKindOfClass:[UICollectionViewCell class]]) {
            return nil;
        }
        self = [cellArray objectAtIndex:0];
 }
return self;

}

一切都很好,它显示了我在- (NSInteger) collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section方法中的返回值,即 11。但是当我记录 cellArray 的启动过程时,它看起来像这样:

应用日志数据

所以单元格数组正在计算数组添加单元格的次数,由于某种原因,它只增加到 6。奇怪的是;加载所有 11 个项目,但 NSArray 没有记录它已加载所有 11 个,它只是在 6 处停止,这很烦人......我尝试了几种不同的方法来解决这个问题,但它们似乎没有工作,它的快把我逼疯了!我想没有其他人遇到过这个问题吗?

我将添加我的 rootController.m 集合视图代码以防万一,但是,它确实以正确的方式链接,所以这不应该是问题。

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellID = @"cellID";

    insightCell *myCell = (insightCell *)[collectionView dequeueReusableCellWithReuseIdentifier:cellID forIndexPath:indexPath];

return myCell;
}
4

1 回答 1

0

当您使用 dequeueReusableCellWithIdentifier 创建单元格时,它将重用从屏幕滚动出的具有相同 id 的单元格。见参考:参考

您可以在 WWDC 2012 视频中找到该主题的精彩演示。

于 2012-11-19T15:31:09.513 回答