Некоторые из моих разделов CollectionView должны позволять пользователям выбирать только отдельные опции, а другие должны позволять пользователям выбирать любую сумму в этом разделе.Как создать CollectionView таким образом, чтобы некоторые разделы допускали множественный выбор, а другие - только один?
Я создаю приложение для доставки еды, в котором пользователям предлагается выбрать из экрана выбора для настройки своего заказа (т. Е.сбор уровня сахара или выбор дополнительного напитка).В настоящее время у меня есть список настраиваемых опций, отображаемых как один UICollectionView с различными разделами, определяющими, что именно они хотели бы настроить.Для пояснения в заголовке раздела может быть указано «Выберите свой напиток», а в ячейках этого раздела будут перечислены «Кокс», «Пепси» и т. Д.
class MenuDetailVC: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
var item: MenuItem?
var cvCellID = "collectionviewid"
var masterCustomizables: [MasterCustomize]?
override func viewDidLoad() {
super.viewDidLoad()
masterCustomizables = item?.customizables
setupCV()
}
//...
func setupCV() {
masterCollectionView.dataSource = self
masterCollectionView.delegate = self
masterCollectionView.register(CustomizeCellHeader.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionHeader, withReuseIdentifier: "headerID")
masterCollectionView.register(CustomizeCell.self, forCellWithReuseIdentifier: cvCellID)
masterCollectionView.backgroundColor = UIColor.white
masterCollectionView.allowsMultipleSelection = true
}
}
extension MenuDetailVC {
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cvCellID, for: indexPath) as! CustomizeCell
cell.customizable = masterCustomizables?[indexPath.section].choices?[indexPath.row]
return cell
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
if let count = masterCustomizables?.count {
return count
} else {
return 0
}
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if let count = masterCustomizables?[section].choices?.count {
return count
} else {
return 0
}
}
Класс MasterCustomize имеет переменную экземпляра .isRequired.это возвращает bool, и если .isRequired == true, раздел должен содержать отдельные ячейки выбора.В противном случае он должен содержать несколько ячеек выбора.Очевидно, что текущее состояние программы возвращает только несколько ячеек выбора.Спасибо!