CollectionView Header, section Header

swift

#1

Добрый вечер! Подскажите как добиться от CollectionView такого результат. У секции свой header у коллекции свой


#2

Section Index 0 = CollectionView Header
Section Index 1, 2, 3 etc = Section Header


#3

Пока понятно, спасибо!


#4

В продолжение подскажите как добавлять данные из массива начиная с section 1.
Сделал так , нужного результат не получил

 func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
          if section == 0 {
        return .zero
    }
    return  p[section].value.count
}

#5

.value это что такое?


#6
var sessionFilm = [String?: [TimeSession]]()
let p = Array(sessionFilm)

#7

и что у вас на выходе получается?


#8

Номер зала это header секции, и время сеанса это ячейки
Optional(“4”) Optional(“22:50”)
Optional(“4”) Optional(“12:30”)
Optional(“4”) Optional(“17:40”)
Optional(“4”) Optional(“15:05”)
Optional(“4”) Optional(“20:15”)


#9

У меня получается что данные начинают заполняться с 0 headera и 0 section. А мне нужно, чтобы 0 были пустые я в них буду другую информацию добавлять


#10
if indexPath.section > 0 {
    ...
}

#11

Как ни странно, но все тоже самое


#12

Можете показать картинкой что у вас получается?


#13

Главное меню


Кликаю по фильму Форсаж (без условий секций) получается так

Делаю с условиями выходит так


#14

Попробуйте для начала логику разделить на разные VC. У вас тут каша. Вы в одном VC пытаетесь отобразить разные типы ячеек/секций. И судя по заполнению ячеек, у вас в классе ячейки должна быть каша с логикой так же.

Вообще тут должно быть все просто.
section 0 - collectionview header

  • cells 0
    section 1 - section header
  • cells N
    section 2 - section header
  • cells M
    и т.д.

и логика с проверкой текущей секции должна быть в 2 методах numberOfItemsInSection и celllForItemAt


#15

Так-то у меня 2 vc. 1 menuvc , 2 detailvc. И проверку делал в двух методах. Или я чего-то не догоняю


#16

Покажите сам массив sessionFilm, хотя бы первые 4-5 секций


#17

[Optional("1"): [HappyCinema.TimeSession(time: Optional("16:25"), hall: Optional("1"), formats: Optional(["2D"]), upgrades: Optional([""])), HappyCinema.TimeSession(time: Optional("21:35"), hall: Optional("1"), formats: Optional(["2D"]), upgrades: Optional([""])), HappyCinema.TimeSession(time: Optional("19:00"), hall: Optional("1"), formats: Optional(["2D"]), upgrades: Optional([""]))], Optional("4"): [HappyCinema.TimeSession(time: Optional("15:05"), hall: Optional("4"), formats: Optional(["2D"]), upgrades: Optional([""])), HappyCinema.TimeSession(time: Optional("17:40"), hall: Optional("4"), formats: Optional(["2D"]), upgrades: Optional([""])), HappyCinema.TimeSession(time: Optional("10:00"), hall: Optional("4"), formats: Optional(["2D"]), upgrades: Optional([""])), HappyCinema.TimeSession(time: Optional("12:30"), hall: Optional("4"), formats: Optional(["2D"]), upgrades: Optional([""])), HappyCinema.TimeSession(time: Optional("20:15"), hall: Optional("4"), formats: Optional(["2D"]), upgrades: Optional([""])), HappyCinema.TimeSession(time: Optional("22:50"), hall: Optional("4"), formats: Optional(["2D"]), upgrades: Optional([""]))]]


#18

Теперь я кажется понял. Вам нужно вытаскивать данные из массива по индексу section - 1


#19

Даже стесняюсь спросить как это сделать).


#20

p[section - 1] и Array(sectionFilm)[indexPath.section - 1]
только это все должно быть внутри условия if section > 0 или if indexPath.section > 0