我的故事板上有两个UICollectionView
,每个都有自己的插座:
@IBOutlet weak var daysCollectionView: UICollectionView!
@IBOutlet weak var hoursCollectionView: UICollectionView!
在每个集合视图中,我想使用不同类型的单元格。所以我创建了一个DayCell
类和一个HourCell
类。
然后在cellForItemAtIndexPath:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
if collectionView == self.dayCollectionView
{
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("dayCell", forIndexPath: indexPath) as DayCell
...
return cell
}
else if collectionView == self.hourCollectionView
{
let cell: HourCell = collectionView.dequeueReusableCellWithReuseIdentifier("hourCell", forIndexPath: indexPath) as HourCell
...
return cell
}
}
我收到编译错误
在预期返回UITableCellView"。
的函数中缺少返回
我完全遗漏了某些内容,或者if
语句中的返回值是否在这种情况下不起作用?
或者我只是这样做完全错了?这似乎是每个人都在暗示的答案。我无法让它发挥作用。
答案 0 :(得分:3)
这是因为您的代码中的if
条件并非“详尽无遗”。即,存在执行可以到达功能结束并且无法返回单元的情况。 (例如,您可以在将来引入其他集合视图)
这是一个最简单的修复:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
if collectionView == self.dayCollectionView {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("dayCell", forIndexPath: indexPath) as DayCell
...
return cell
} else { // do not do this check: if collectionView == self.hourCollectionView {
let cell: HourCell = collectionView.dequeueReusableCellWithReuseIdentifier("hourCell", forIndexPath: indexPath) as HourCell
...
return cell
}
}