自定义集合单元格错误

Posted

技术标签:

【中文标题】自定义集合单元格错误【英文标题】:Custom Collection Cell Error 【发布时间】:2014-12-02 22:19:42 【问题描述】:

所以我只是想将我的自定义单元格类与我的集合单元格链接起来。我已经为此工作了两天,无法弄清楚我做错了什么。我已经遵循了这方面的教程并在那里取得了成功,但无法弄清楚我自己的项目中缺少什么。

//WORKING 
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as UICollectionViewCell

//Crashes
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as ChampionViewCell

即使我尝试创建一个没有任何其他内容的新项目,我也会遇到这个问题。每当我链接我的自定义单元类时,应用程序就会崩溃。

这是我的自定义单元格类:

import UIKit
class ChampionViewCell: UICollectionViewCell 
    @IBOutlet weak var champImage: UIImageView!

我的单元格标识符在情节提要中和我的 CollectionViewController 文件的顶部设置为“ChampionCell”。我有视图控制器和链接到情节提要的单元格。

我真的无法弄清楚我错过了什么。抱歉,如果这是一个超级新手问题,但我真的很难弄清楚。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

为了让dequeueReusableCellWithReuseIdentifier 实例化自定义单元格,您必须使用此UICollectionView 方法注册单元格类:

func registerClass(_ cellClass: AnyClass?, forCellWithReuseIdentifier identifier: String)

只需在您的 viewDidLoad 方法中调用该方法即可。

该方法应按如下方式调用:

self.collectionView.registerClass(ChampionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

其中reuseIdentifier 是包含单元标识符的变量/属性。

【讨论】:

这似乎不起作用。我收到了两个错误:1. 参数中的无关 '_':'cellClass' 没有关键字参数名称 2. 函数声明主体中应为 '' @StuartCasarotto:我认为您以错误的方式调用该方法 - 请参阅更新的答案 你是对的。谢谢你,这完全有道理,我很伤心,我没想过早点去那里。谢谢你。我知道这会很简单。 快速提问:我接下来要尝试向我的单元格中添加图片。我已将图片添加到我的 Images.xcassets 并使用以下代码访问它( cell.champImage.image = UIImage(named: "testPhoto") )但不断收到意外的 nil。猜猜为什么? 您确定名称拼写正确吗?除此以外什么都想不出来【参考方案2】:

在故事板上,单元格的类需要设置为ChampionViewCell。当单元格出列时,它将使用给定的标识符(在您的情况下为ChampionCell)从情节提要中出列一个单元格。但是出队的单元格仍然是UICollectionViewCell

在情节提要上,选择单元格,然后在 Inspector 面板(右侧面板)中,选择 Identity Inspector(看起来有点像报纸的那个)。 “类”应该说“UICollectionViewCell”。将此更改为“ChampionViewCell”。

【讨论】:

以上是关于自定义集合单元格错误的主要内容,如果未能解决你的问题,请参考以下文章

RxSwift 不将数据绑定到自定义集合视图单元格

swift 3 - 自定义集合视图单元格之间的水平空间

使用自定义维度重新排序集合视图单元格时出现问题

使用自定义集合视图布局快速配置动态单元格高度

如何根据图像自定义集合视图单元格

如何使用按钮创建自定义集合视图?