我尝试对 UICollectionViewCell 进行子类化并从 nib 文件加载:
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
NSArray *arrayOfViews = [[NSBundle mainBundle] loadNibNamed:@"DatasetCell" owner:self options:nil];
if ([arrayOfViews count] < 1) {
return nil;
}
if (![[arrayOfViews objectAtIndex:0] isKindOfClass:[UICollectionViewCell class]]) {
return nil;
}
self = [arrayOfViews objectAtIndex:0];
UIView *view = [UIView new];
view.frame = self.frame;
view.backgroundColor = [UIColor orangeColor];
self.selectedBackgroundView = view;
}
return self;
}
我遇到了选择单元格的问题,cell.selected
没有被设置。总是NO
这导致取消选择单元格的问题。
如何使单元格进入选定状态?
EDIT:
我最初将自定义 UICollectionViewCell 作为类加载:
[collectionView registerClass:[DatasetCell class] forCellWithReuseIdentifier:@"dataCell"];
切换到加载笔尖:
[collectionView registerNib:[UINib nibWithNibName:@"DatasetCell" bundle:nil] forCellWithReuseIdentifier:@"nibCell"];
我两种方式都有相同的选择/取消选择问题。
主要错误是您定义了一个属性
@property (nonatomic) BOOL isSelected;
在您的自定义 UICollectionViewCell 子类中(在“DatasetCell.h”中),这会干扰 UICollectionViewCell 继承的“selected”属性。
如果删除该属性定义,选择和取消选择将按预期工作,至少对于通过 nib 文件加载的单元格来说是这样registerNib:...
.
对于通过加载的单元格registerClass:...
, initWithFrame
叫做。您尝试从那里的 nib 文件加载单元格。这没有多大意义,而且似乎无法正常工作。您应该以编程方式创建单元格initWithFrame
并使用registerClass:
,或者在 nib 文件中创建单元格并使用registerNib:
.
initWithFrame
从 nib 文件加载的单元格不被调用,请使用awakeFromNib
如果您想对单元格进行修改。
希望有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)