Как иметь несколько UICollectionView с заголовком и сделать его горизонтальным

Я очень новичок в Swift и IOS. Я хотел бы реализовать вид, как показано ниже, а также сделать так, чтобы каждый раздел мог прокручиваться по горизонтали. прототип У меня есть несколько вопросов по дизайну:

  1. Должен ли я иметь один UICollectionView или три?
  2. Если я хочу открыть каждый раздел, например, нажать «Завтрак», чтобы перейти к полному просмотру завтрака, остается ли ответ на вопрос 1 тем же?
  3. Для заголовка лучше иметь метку или сделать его заголовком раздела. Так как думаю просто иметь лейбл намного проще.
  4. Есть ли какой-нибудь пример для быстрого выполнения этого? Такое чувство, что это очень стандартный нормальный.

person DashengMa    schedule 24.06.2016    source источник
comment
Вы можете прокручивать вверх и вниз, чтобы увидеть другой раздел?   -  person jo3birdtalk    schedule 24.06.2016
comment
Используйте UITableViewCell и внутри этой ячейки добавьте UICollectionView с горизонтальной прокруткой. Это решит вашу проблему.   -  person Nirav D    schedule 24.06.2016


Ответы (1)


  1. Это может быть реализовано в любом случае, но я бы, вероятно, выбрал одно представление коллекции. Разделение будет выполняться по разным разделам, которые вы реализуете с помощью функции

        override func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int {
    
               return 3
    }
    

Затем вы должны определить количество элементов в каждом разделе с помощью:

override func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return 3
    }

Затем вы должны определить содержимое каждой ячейки с помощью:

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath)

    // Configure the cell

    return cell
}

Затем вы перейдете к новому контроллеру представления, когда они выберут ячейку, используя

override func collectionView(collectionView: UICollectionView, shouldSelectItemAtIndexPath indexPath: NSIndexPath) -> Bool {
        return true
    }

indexPath имеет indexPath.section и indexPath.row, которые позволяют вам получить доступ к точному расположению каждой ячейки, когда это необходимо в функциях. Вам также нужно будет настроить делегат/источник данных для collectionView, чтобы заставить его работать, и вызывать collectionView.reloadData() каждый раз, когда содержимое ячеек обновляется, не выходя из viewController. Использовать заголовок проще, чем метку, если вы используете одно представление коллекции с 3 разделами, а если вы используете 3 табличных представления, использование метки или заголовка так же сложно, но я не рекомендую этот способ. И последнее... ссылка на руководство по collectionView

person Sethmr    schedule 24.06.2016
comment
Спасибо @Sethmr, это очень полезно, и я попробовал этот способ, и он отлично сработал. Еще одна проблема заключается в том, можно ли сделать каждый раздел прокручиваемым по горизонтали, а весь collectionView прокручиваемым по вертикали? - person DashengMa; 25.06.2016
comment
Это возможно, но для этого потребуется гораздо больше работы. Вы всегда должны быть предельно осторожны при использовании как вертикальной, так и горизонтальной прокрутки. Приоритеты должны быть установлены, и у меня нет времени вникать во все это. Я бы внимательно прочитал документацию по представлениям ScrollViews и Collection, прежде чем пытаться вникать во все это. - person Sethmr; 31.10.2016