我正在编写一个应用程序,其中我在表格视图单元格中有一个水平集合视图。
尝试以编程方式设置单元格中的文本时,应用程序崩溃并显示fatal error: unexpectedly found nil while unwrapping an Optional value
错误消息。
对于我和一位经验丰富的可可触摸程序员,这表明我的IBOutlets未正确连接,因此cell.filmTitle
在明确解包时将返回nil。所以我将所有IBOutlet连接到单元格XIB,并删除它们背后的所有代码,然后重新编码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)
。此外,{{1}}向控制台输出“ - ”。感谢任何可以提供帮助的人。
编辑2:通过进一步调查,我发现根本没有看到细胞。当我移除IBOutlets,并试图简单地显示它们出现在XIB中的10个单元格时,它们根本不显示,而我得到的是10个相同大小的空白单元格。它显示了一些单元格,因为滚动条会根据显示的单元格数量更改大小和滚动。
答案 0 :(得分:0)
听起来XIB文件甚至没有加载。
在IB中正确设置,或在viewDidLoad中的视图控制器中手动设置
// register table view cell in external XIB file "YourFileName.xib"
tableView.registerNib(UINib(nibName: "YourFileName", bundle: nil), forCellReuseIdentifier: "Home Whats On Collection View Cell")
如果您正在使用包含原型单元格的故事板,请确保在Interface Builder中设置单元格重用标识符。
我猜测问题的核心是表视图不知道要使用此重用标识符加载哪个类。很高兴有一个堆栈跟踪和更多关于此的信息。您是否正在使用带有表格视图单元格的XIB文件?你在故事板中使用原型吗?