Вы можете использовать метод didSelectRowAt
, чтобы получить indexPath
выбранной ячейки. затем проверьте, не является ли эта ячейка последней. Если это не так, прокрутите вправо, в противном случае прокрутите влево.
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
collectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true)
collectionView.reloadItems(at: [indexPath])
}
ОБНОВЛЕНИЕ1:
Я не увидел изображение при ответе на вопрос, так как оно еще не был добавлен Я обновил свой ответ.
ОБНОВЛЕНИЕ2:
В вашем viewDidLoad
collectionView.allowsMultipleSelection = false // in your view didLoad
затем используйте наблюдатели свойств для изменения выбранного индекса.
var selectedIndexPath : IndexPath = IndexPath(item: 0, section: 0) {
didSet {
self.collectionView.reloadItems(at: [selectedIndexPath])
}
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return self.tabArray.count
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "tabCell", for: indexPath) as! tabCollectionViewCell
cell.tabLabel.text = self.tabArray[indexPath.row]
cell.bottomView.isHidden = (indexPath == selectedIndexPath) ? false : true
return cell
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
selectedIndexPath = indexPath
tabCollectionView.scrollToItem(at: indexPath, at: .centeredHorizontally, animated: true)
}
func collectionView(_ collectionView: UICollectionView, didDeselectItemAt indexPath: IndexPath) {
let cell = collectionView.cellForItem(at: indexPath) as! tabCollectionViewCell
cell.bottomView.isHidden = true
}