0

我的应用程序中有一个集合视图,我希望它包含一个自定义单元格。我创建了一个自定义单元格视图 xib 文件。然后我在我的数据源方法中使用它:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
 OtherCustomersCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:OTHER_CUSTOMERS_CELL_IDENTIFIER forIndexPath:indexPath];

  if(cell == nil){
      NSArray *nsObjects = [[NSBundle mainBundle] loadNibNamed:@"OtherCustomersCell" owner:nil options:nil];
    for(id obj in nsObjects)
        if([obj isKindOfClass:[OtherCustomersCell class]])
            cell = (OtherCustomersCell*) obj;
}
[cell.name setText:@"AAAA BBBBB"];

return cell;
}

但是当我运行应用程序时,只有一个黑色矩形应该是集合视图(在表格视图的底部):

在此处输入图像描述

我究竟做错了什么?先感谢您。

4

2 回答 2

4

集合视图与表格视图的工作方式不同,因为如果一个单元格不能出列,您不必创建一个单元格。

相反,您必须先为单元格注册笔尖:

- (void)viewDidLoad
{
    ...

    UINib *cellNib = [UINib nibWithNibName:@"OtherCustomersCell" bundle:nil];
    [collectionView registerNib:cellNib forCellWithReuseIdentifier:OTHER_CUSTOMERS_CELL_IDENTIFIER];
}

然后,您可以使单元格出列,如有必要,它将自动为您创建:

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    OtherCustomersCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:OTHER_CUSTOMERS_CELL_IDENTIFIER forIndexPath:indexPath]; // cell won't be nil, it's created for you if necessary!
    [cell.name setText:@"AAAA BBBBB"];

    return cell;
}
于 2013-02-28T09:51:17.520 回答
2

您必须UICollectionView通过以下方式在 viewdidload 中注册实例,然后才能使用它。

[self.photoListView registerNib:[UINib nibWithNibName:@"UIcollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"Identifier"];
于 2013-02-28T09:54:28.090 回答