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

UICollectionViewviewdidloadに次の方法でインスタンスを登録する必要があります。そうすれば、これを使用できます。

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