将一个静态单元添加到UICollectionView
我有一个UICollectionView显示数组中的单元格。 我想要第一个单元格是一个静态单元格,作为一个提示,以进入创buildstream程(最终添加一个新的单元格)。
我的做法是将两个部分添加到我的collectionView中,但是我目前无法弄清楚如何在cellForItemAtIndexPath中返回一个单元格。 这是我的尝试:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { if indexPath.section == 0 { let firstCell = collectionView.dequeueReusableCellWithReuseIdentifier("createCell", forIndexPath: indexPath) as! CreateCollectionViewCell firstCell.imageView.backgroundColor = UIColor(white: 0, alpha: 1) return firstCell } else if indexPath.section == 1 { let cell = collectionView.dequeueReusableCellWithReuseIdentifier("mainCell", forIndexPath: indexPath) as! MainCollectionViewCell cell.imageView?.image = self.imageArray[indexPath.row] return cell } }
这个问题是我必须返回一个单元格在函数结束。 它似乎不会作为条件的一部分返回。 感谢您的帮助!
详细阐述Dan的注释,该函数必须返回UICollectionViewCell
一个实例。 目前编译器可以看到一个代码path,其中indexPath.section
既不是0也不是1.如果发生这种情况,代码不会返回任何内容。 不要紧,这将永远不会发生在您的应用程序的逻辑。
解决这个问题最简单的方法就是把“else if”改成“else”。 如:
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { if indexPath.section == 0 { let firstCell = collectionView.dequeueReusableCellWithReuseIdentifier("createCell", forIndexPath: indexPath) as! CreateCollectionViewCell firstCell.imageView.backgroundColor = UIColor(white: 0, alpha: 1) return firstCell } else { // This means indexPath.section == 1 let cell = collectionView.dequeueReusableCellWithReuseIdentifier("mainCell", forIndexPath: indexPath) as! MainCollectionViewCell cell.imageView?.image = self.imageArray[indexPath.row] return cell } }
现在,如果只有两个代码path,并且都返回一个单元格,那么编译器会更快乐。