UICollectionViewCell子类问题

时间:2012-12-11 01:09:19

标签: objective-c ios6 uicollectionview uicollectionviewcell

我已经创建了一个UICollectionViewCell -

@interface ListCell : UICollectionViewCell
@property(nonatomic,strong) IBOutlet UILabel *lblAppName;
@end

我已经制作了一个相同的xib,制作了所有IBOutlet集合以及设置了XIB的类,而在Collection视图委托方法中使用这个Cell时,我在尝试访问标签实例时获得了一个nill值。

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {

ListCell *cell = (ListCell *)[cv dequeueReusableCellWithReuseIdentifier:@"ListCell" forIndexPath:indexPath];
AppDetails *temp=[arrApplist objectAtIndex:indexPath.item];
cell.lblAppName.text=temp.strName;
return cell;
}

我已将单元格注册到我的集合视图中:

[collectionView registerClass:[ListCell class] forCellWithReuseIdentifier:@"ListCell"];

还有什么我可能会遗漏? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

我认为您需要使用registerNib:forCellWithReuseIdentifier:来注册xib,而不是注册该类。试试看,看看是否有帮助。

答案 1 :(得分:1)

如果您使用ListCell.xib,请使用registerNib:forCellWithReuseIdentifier:。 在awakeFromNib中实现ListCell初始化而不是initWithFrame。 并改变类型:

- (ListCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
ListCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"ListCell" forIndexPath:indexPath];
cell.lblAppName.text=(NSString *); 
return cell; 
}