2016-03-22 2 views
1

У меня есть UICollectionView, который отображает ячейки из массива. Я хочу, чтобы первая ячейка была статической ячейкой, которая служит подсказкой для перехода в поток создания (в конечном счете, добавление новой ячейки).Добавление статической ячейки в UICollectionView

Мой подход состоял в том, чтобы добавить два раздела в мою коллекциюView, но в настоящее время я не могу понять, как вернуть ячейку в 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 
    } 
} 

Проблема в том, что я должен вернуть клетку в конце функции. Кажется, что он не будет возвращен как часть условия if. Спасибо за помощь!

+0

Просто сделайте последний блок блоком обычного else вместо проверки того, что раздел 1 – dan

+0

Я пытаюсь достичь чего-то подобного с несколькими отличиями. Я хочу, чтобы статическая ячейка была в конце, и я использую заголовок раздела для отображения некоторого текста. Если вы используете отдельный раздел для статической ячейки, он не будет отображаться в собственной строке, а другие ячейки (в другом разделе) будут отображаться под ним? – Annjawn

ответ

1

Разрабатывая комментарий Дана, функция должна вернуть экземпляр UICollectionViewCell. В настоящий момент компилятор может видеть путь кода, где 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 
    } 
} 

Теперь, если есть только два пути кода, и оба возвращают ячейку, так что компилятор будет счастливее.

Смежные вопросы