Я использую UICollectionView
в своем приложении, чтобы пользователь мог выбирать между парой городов и ресторанами в этих городах.
Сначала я загружу города с ресторанами в них.
cities = RestaurantsLoader.cities()
Затем я заполню UICollectionView
ими.
extension RestaurantPickerViewController: UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 40, height: 40)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 1
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
return 1
}
}
И затем отобразить их (с UILabel
, потому что я еще не успел создать пользовательскую ячейку)
extension RestaurantPickerViewController: UICollectionViewDataSource {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return cities[section].restaurants.count
}
func numberOfSections(in collectionView: UICollectionView) -> Int {
return cities.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "normalCell", for: indexPath)
cell.viewWithTag(123)?.removeFromSuperview()
let label = UILabel(frame: cell.bounds)
label.text = cities[indexPath.section].restaurants[indexPath.item].name
label.textAlignment = .center
label.tag = 123
cell.addSubview(label)
return cell
}
}
Теперь я реализовал didSelectItem
функцию UICollectionView
.
extension RestaurantPickerViewController: UICollectionViewDelegate {
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
print(indexPath)
}
}
Однако этот indexPath почти всегда выключен. Когда я нажимаю ячейку, расположенную в разделе: 1, элемент: 25, она печатает раздел: 2, например, элемент: 0. Я нахожу это действительно странным и не встречал ничего подобного раньше. Что я делаю неправильно? Или как я могу это исправить?