1

コレクション ビューのコードは次のとおりです。

- (void)viewDidLoad
{
    [super viewDidLoad];
    ...
    [_teamsCollection registerClass:[MWTeamCollectionCell class] forCellWithReuseIdentifier:@"Cell"];

}
#pragma mark data source and delegate methods of collection view
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{
    return 1;
}

-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
    return 10;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
    static NSString *CellIdentifier = @"Cell";
    MWTeamCollectionCell *cell = [_teamsCollection dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];
    if (cell == nil) {
        cell = (MWTeamCollectionCell*)[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    cell.teamName.text = @"team name";
    return cell;
}

行をデバッグするとreturn cell;、適切なログが取得されますが、セルが表示されません。

(gdb) po cell
<MWTeamCollectionCell: 0x72aff80; baseClass = UICollectionViewCell; frame = (0 0; 50 50); layer = <CALayer: 0x72b0090>>
(gdb) po cell
<MWTeamCollectionCell: 0x72b08e0; baseClass = UICollectionViewCell; frame = (67.5 0; 50 50); layer = <CALayer: 0x72b0970>>
(gdb) po cell
<MWTeamCollectionCell: 0x8aad380; baseClass = UICollectionViewCell; frame = (135 0; 50 50); layer = <CALayer: 0x8a72d20>>
4

3 に答える 3

1

UITabeViewのようなクラスを登録する必要はありません。これを試してください。

[yourCollection registerClass:[MWTeamCollectionCell class] forCellWithReuseIdentifier:@"CellName"];

その後

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    MWTeamCollectionCell *cell = [yourCollection dequeueReusableCellWithReuseIdentifier:@"CellName" forIndexPath:indexPath];
    //Setting some thing here

    return cell;

}

それで十分です。MWTeamCollectionCell:UICollectionViewCellを覚えて、MWTeamCollectionCell.mの(id)initでカスタマイズしてください(teamNameラベルを初期化してください)

また、UICollectionViewはiOS6でのみ機能します。iOS5を試してみると、何も表示されません。

于 2013-01-16T13:37:00.487 に答える
0

この行を置き換える

[yourCollection registerClass:[MWTeamCollectionCell class] forCellWithReuseIdentifier:@"CellName"]; 

以下の作業行で

UINib *cellNib = [UINib nibWithNibName:@"MWTeamCollectionCell" bundle:nil];    
[self.collectionView registerNib:cellNib forCellWithReuseIdentifier:@"CellName"];

私にとってはうまくいきました。

于 2015-03-31T05:36:16.010 に答える
0

UICollectionViewCell の代わりに UITableViewCell を割り当てているようです。

また、カスタム コレクション セルの実装方法に応じて、nib が適切にデコード (ロード) されていることを確認してください。最初に UICollectionViewCell を使用して、インターフェイス ビルダーのアウトレットと識別子名が正しいことを確認することをお勧めします。

于 2013-01-16T10:27:15.653 に答える