两个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 } }