NSArray没有加载数组中的所有对象?

时间:2012-11-19 15:18:08

标签: ios nsarray uicollectionview uicollectionviewcell

我目前正在为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的启动过程时,它就是这样:

App Log data

因此,单元格数组正在计算数组添加单元格的次数,由于某种原因,它只会达到6次。奇怪的是;所有11项加载,但NSArray没有记录它已加载所有11,它只是停在6这很烦人...我尝试了几种不同的方法来解决这个但它们似乎没有工作,它的让我生气!我不认为其他人遇到过这个问题?

我只是添加我的rootController.m collectionview代码,然而,它确实以正确的方式链接,所以这不应该是问题。

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

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

return myCell;
}

1 个答案:

答案 0 :(得分:0)

当您使用dequeueReusableCellWithIdentifier创建单元格时,它将重用具有相同ID的单元格,该单元格从屏幕滚出。 请参阅参考:Reference

您可以在WWDC 2012视频中找到一个很好的演示文稿。