Выбор одного UILabel в UICollectionView - PullRequest
0 голосов
/ 23 июня 2018

Я создал горизонтальный UICollectionView, который отображает 12 месяцев, и мне нужно, чтобы пользователь выбрал один из них, для этого я использовал collectionCell.isUserInteractionEnabled=true и UITapGestureRecognizer, но это возвращает месяцы на всей странице.

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let collectionCell = collectionView.dequeueReusableCell(withReuseIdentifier: "monthCollectionView", for: indexPath as IndexPath) as! AttendenceCollectionViewCell
    collectionCell.collectionViewCellLabel.text=monthArray[indexPath.item]
    collectionCell.backgroundColor = UIColor.clear
    collectionCell.isUserInteractionEnabled=true
    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(customMonth(month:tap:)))
    collectionCell.collectionViewCellLabel.addGestureRecognizer(tapGesture)
    collectionCell.collectionViewCellLabel.isEnabled=true
    collectionCell.isExclusiveTouch=true

    customMonth(month:monthArray[indexPath.item],tap: tapGesture)


    return collectionCell
}


@objc func customMonth(month:String,tap:UITapGestureRecognizer){
    print("\n",month,"\n")

Выход:

Авг

сент.

окт

ноя

Дек

апр

март

февраль

Ян

Ответы [ 2 ]

0 голосов
/ 23 июня 2018

Во время исследования я обнаружил, что мы можем использовать

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath)

для выбора элемента в UICollectionView

, он реализован так:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    let selectedMonth=monthArray[indexPath.item]
    collectionView.cellForItem(at: indexPath)
    print("\n\n",selectedMonth)
  }
0 голосов
/ 23 июня 2018

Вы действительно должны использовать метод делегата collectionView, didSelectItemAt() вместо использования распознавателя жестов.

...