两个UICollectionViews和一个UIViewController中的两个UICollectionViewCells

我的故事板上有两个UICollectionView ,每个都有自己的插口:

 @IBOutlet weak var daysCollectionView: UICollectionView! @IBOutlet weak var hoursCollectionView: UICollectionView! 

在每个集合视图中,我想使用不同types的单元格。 所以我创build了一个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的函数中缺less返回“。

我完全错过了某些东西,或者在if语句里面的回报没有在这种情况下工作?

或者我只是在做这个完全错误的? 这似乎是每个人都build议的答案。 我只是不能得到它的工作。

这是因为你的代码中的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 } }