我需要能够在嵌套的集合视图中设置文本标签。
我可以在print语句中显示每个值,但是当我将它分配给UILabel时,我得到fatal error: unexpectedly found nil while unwrapping an Optional value
我从父集合视图加载数据并将其分配给数据源:
private var timeZone: [AlternativeTimeZone]!
var setTimeZones: [AlternativeTimeZone] {
get {
return self.timeZone
}
set {
self.timeZone = newValue
}
}
childcollectionviewService.setTimeZones = alternateTimesZonesData
该服务是一个外部类,它包含对父集合视图的所有引用,以保持视图控制器的小。
我的嵌套集合视图代码看起来很标准。
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "AlternateTimeZoneCell", for: indexPath) as? AlternateTimeZoneCell else { return UICollectionViewCell() }
print("Time Zone:", timeZone[indexPath.row].time)
cell.alternateTime.text = timeZone[indexPath.row].time
return cell
}
AlternativeTimeZone
是一个带有文本字符串属性的简单结构。我在一个嵌套的集合视图中,所以indexPath可以覆盖孩子吗?
答案 0 :(得分:0)
我认为问题可能在于这一行:
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "AlternateTimeZoneCell", for: indexPath) as? AlternateTimeZoneCell else { return UICollectionViewCell() }
尝试替换为:
guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "AlternateTimeZoneCell", for: indexPath) as? AlternateTimeZoneCell else { return AlternateTimeZoneCell() }
答案 1 :(得分:0)
听起来,您alternateTime
中的字段AlternateTimeZoneCell
的单元格模板中的插座链接已损坏。检查您加载的单元格中是否为零。还要检查出列是否成功。
答案 2 :(得分:0)
我设法通过删除数据源并将声明委托给awakeFromNib
方法解决了这个问题,因为事实证明init
试图在给出数据之前设置alternateTime
值它。