自定义集合单元格错误
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”。
【讨论】:
以上是关于自定义集合单元格错误的主要内容,如果未能解决你的问题,请参考以下文章