在CollectionView Cell中设置Label值时触发nil解包致命错误
解决
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value崩溃问题 这个崩溃的核心原因很明确:你在代码里重复注册了CollectionView Cell,导致从Storyboard/XIB里配置的Cell布局没有被加载,cellTitle这个IBOutlet自然就是nil,赋值时触发了崩溃。
问题根源
你在viewDidLoad中执行了这行代码:
self.partsCollectionView.register(SelectionCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)
但你的SelectionCollectionViewCell是通过Storyboard创建的,并且已经在Storyboard中配置了复用标识符cell、关联了cellTitle的IBOutlet。代码里的register方法会覆盖Storyboard的配置,让系统创建一个纯代码版本的SelectionCollectionViewCell——这个版本没有加载你在Storyboard里设计的Label,所以cellTitle就是nil。
修复步骤
移除代码中的注册语句
直接删掉viewDidLoad里的那行register代码,让CollectionView使用Storyboard中已经配置好的Cell模板。确认Storyboard的配置正确
再检查一遍这几个关键点:- 选中CollectionView的Cell,在Attributes Inspector里确认Reuse Identifier是
cell - 在Identity Inspector里确认Cell的Class设置为
SelectionCollectionViewCell - 选中Cell,打开Connections Inspector,确认
cellTitle已经正确连接到Label上(没有红色感叹号)
- 选中CollectionView的Cell,在Attributes Inspector里确认Reuse Identifier是
可选:确认CollectionView的代理和数据源
如果你的CollectionView没有在Storyboard里关联dataSource和delegate,记得在viewDidLoad里加上:partsCollectionView.dataSource = self partsCollectionView.delegate = self
做完这些修改后,重新运行代码,cellTitle就能正常获取到,赋值也就不会崩溃了。
内容的提问来源于stack exchange,提问作者Ashish Sharma
相关产品推荐
相关产品推荐

