UICollectionViewCell 子类问题

Posted

技术标签:

【中文标题】UICollectionViewCell 子类问题【英文标题】:UICollectionViewCell Subclass issue 【发布时间】:2012-12-11 01:09:19 【问题描述】:

我已经继承了 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"];

还有什么我可能遗漏的吗? 提前致谢。

【问题讨论】:

【参考方案1】:

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

【讨论】:

您好,谢谢,但必须同时注册课程和 xib【参考方案2】:

如果你使用 ListCell.xib,请使用 registerNib:forCellWithReuseIdentifier:。 在 awakeFromNib 而不是 initWithFrame 中实现 ListCell 初始值。 然后像这样改变类型:

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

【讨论】:

以上是关于UICollectionViewCell 子类问题的主要内容,如果未能解决你的问题,请参考以下文章

子类化 UICollectionViewCell 导致永远不会被选中

试图确定子类 UICollectionViewCell 中的单元格宽度

如何在 UITableViewCell 子类中注册 UICollectionViewCell、HeaderCollectionReusableView?

iOS 子类 UICollectionViewCell 自定义 init 方法

子类化 UICollectionViewCell 并从 xib 初始化

子类 UICollectionViewCell 不更新图像