我正在编写一个应用程序,其中在表视图单元格中有一个水平集合视图。尝试以编程方式设置单元格中的文本时,应用程序会崩溃并显示“fatal error: unexpectedly found nil while unwrapping an Optional value”错误消息。对我和一位更有经验的cocoa-touch程序员来说,这表明我的IBOutlets没有正确连接,因此当明确取消包装时,cell.filmTitle将返回nil。因此,我取消了所有与单元格XIB相关联的IBOutlets,并删除了它们背后的所有代码,然后重新编码IBOutlets并重新连接它们。但错误仍然存在。自定义单元格的代码如下:
class homeWhatsOnCellectionCell: UICollectionViewCell {
@IBOutlet var filmTitle: UILabel!
@IBOutlet var filmPoster: UIImageView!
}
集合视图数据源的代码如下:
func collectionView(collectionView: UICollectionView!, numberOfItemsInSection section: Int) -> Int {
return 1
}
func collectionView(collectionView: UICollectionView!, cellForItemAtIndexPath indexPath: NSIndexPath!) -> UICollectionViewCell! {
var cell: homeWhatsOnCellectionCell = collectionView.dequeueReusableCellWithReuseIdentifier("Home Whats On Collection View Cell", forIndexPath: indexPath) as homeWhatsOnCellectionCell
cell.filmTitle.text = "The Hunger Games: Catching Fire"
cell.filmPoster.image = UIImage(named: "The Hunger Games.jpg")
return cell
}
func numberOfSectionsInCollectionView(collectionView: UICollectionView!) -> Int {
return 1
}
编辑:经过与Nate Cook的交谈,我可以说filmTitle
是问题的原因,尽管已正确连接到标签,但却是nil
。此外,dump(cell)
在控制台输出“-”。感谢任何能提供帮助的人。
编辑2:通过进一步调查,我发现根本没有看到这个单元格。当我删除IBOutlets,并尝试简单地显示10个单元格,就像它们在XIB中显示的那样,它们根本没有显示出来,我只得到了大小相同的十个空白单元格。它会显示一些单元格,因为滚动条会根据显示的单元格数量而改变大小并滚动。
cell
的值是多少?“Home Whats On Collection View Cell” 真的是重用标识符吗? - Nate CookIBOutlet
没有正确连接,或者 IB 中存在错误导致出现问题。请确认您只有一个类型为homeWhatsOnCellectionCell
的原型单元格,其重用标识符为“Home Whats On Collection View Cell”,并且已将输出连接到该单元格中的字段? - Nate CookcontactsView.registerClass(ContactCell.self, forCellWithReuseIdentifier: "ContactCell")
。 - hayesgm