Как поймать didSelectItemAt пользовательского UICollectionViewCell - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть пользовательский UICollectionViewCell, в котором размещен UITextField.В UICollectionView есть несколько элементов и несколько типов ячеек, поэтому я хочу разрешить редактирование только одного textField за раз.Чтобы сделать это, я пытаюсь инициировать становление становления становления первого элемента UItextField в пользовательском классе ячейки, когда ячейка выбирается.

Получение ячейки из сценария UICollectionView "didSelectItemat" не удовлетворяет меня, потому чтоАлгоритм будет переполнен, и может быть шанс вызвать ячейку, не имеющую UITextField.

Поэтому я хочу просто написать код в сценарии customCell.Если ячейка выбрана, сохраняется свойство UITextField, чтобы стать FirstResponder.

Мой вопрос заключается в том, что есть способ получить выделение ячейки в классе CustomCollectionCell, например UITableViewCell.

ex) Код UITableViewCell для получения действия выделения

setSelected(_ selected: Bool, animated: Bool) {
    <#code#>
}

Я пытался использовать addGesture для себя, но думал, что это может конфликтовать с делегатом UICollectionView didSelectItemat

import UIKit

class RightTextFieldCell: UICollectionViewCell {

    @IBOutlet weak var itemLabel: UILabel!
    @IBOutlet weak var valueTextField: UITextField!

    override func awakeFromNib() {
        super.awakeFromNib()
    }

    func bind(data: ProfileDoubleStringData) {
        self.itemLabel.text = data.item
        self.valueTextField.text = data.value
    }

}

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

Это было не сложно.Я заметил, что, переопределив функцию touchesEnded (), вы можете легко передать TouchEvent объекта collectionViewCell.Итак, я написал там своего делегата.

`

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    self.delegate?.didTouchDateCell()
}

`

0 голосов
/ 22 сентября 2019

вы можете попробовать:

func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath) {

     let cell = collectionView.cellForItem(at: indexPath) as! MyCell
     cell.doSomething()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...