我花了一些时间浏览其他类似的帖子,但无法找到我的确切问题。我是iOS和目标c的新手,所以它可能非常简单。
我正在继承UICollectionViewCell:
@interface FooCollectionViewCell : UICollectionViewCell
@property (weak, nonatomic) IBOutlet UILabel *cellLabel;
@end
在我自定义的UIViewController子类中,我正在尝试为cellLabel
设置一个值:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {
FooCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:reuseIdentifier forIndexPath:indexPath];
// Configure the cell
UILabel *label = [[UILabel alloc] init];
label.text = @"whatever";
cell.cellLabel = label;
return cell;
}
我的应用在运行时崩溃:
[UICollectionViewCell setCellLabel:]:无法识别的选择器发送到实例0x7fef224144f0
如果我理解了这个错误,它看起来在抱怨我正在尝试在UICollectionViewCell的实例上设置cellLabel属性,而不是FooCollectionViewCell子类的实例。
但是,当我在该行添加断点并查看我的变量时,我看到:
cell FooCollectionViewCell * 0x7fcb5340dcd0 0x00007fcb5340dcd0
从我的代码中可以明显看出,对象必须是FooCollectionViewCell类型,因为类型cell
被实例化为。
我设置故事板的过程是:
我有什么遗失的吗?
答案 0 :(得分:0)
你说你按照教程。你完成了这些步骤吗?
通过实现基本集合视图类并与故事板对象相关联,现在是时候设计单元格了。这很简单,就是将项目从对象库拖放到故事板视图中的原型单元格上。另外,可以通过选择它并使用得到的调整大小手柄来修改单元的大小。细胞的确切设计完全取决于要显示的内容。但是,出于本示例的目的,每个单元格只是显示图像。
因为您在代码中创建了一个新标签,所以它应该已经在原型单元格中可用。你只需要分配cell.cellLabel.text = @" bla bla&#34 ;;
UILabel *label = [[UILabel alloc] init];
label.text = @"whatever";
cell.cellLabel = label;
答案 1 :(得分:0)
我弄明白了这个问题。当我创建视图控制器子类时,文件自动具有
[self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:reuseIdentifier];
在我的viewDidLoad方法中。所以我认为这超越了我在故事板中所做的事情。 FML,但我学到了一些东西。谢谢你的帮助!
解决方法是删除此行,因为我在故事板中配置了这一行。