Я пытаюсь обнаружить ячейку табличного представления с длинным касанием в представлении коллекции.
У меня есть контроллер основного вида (класс MainVC), который содержит CollectionView (класс CollectionViewController).Представление коллекции имеет метку и TableView (класс TableViewController) для каждой ячейки.Методы делегатов представления коллекции реализованы внутри MainVC, а методы делегата tableView реализованы внутри класса CollectionViewController.
Я пытаюсь обнаружить tableViewCell indexPath (чтобы получить его содержимое) при долгом касании.
Код, выполняющий обнаружение (Inside CollectionViewController):
override func awakeFromNib() {
super.awakeFromNib()
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(self.longTapped(longPressGestureRecognizer:)))
longPressRecognizer.delegate = self
self.addGestureRecognizer(longPressRecognizer)
}
func longTapped(longPressGestureRecognizer: UILongPressGestureRecognizer) {
if longPressGestureRecognizer.state == UIGestureRecognizerState.began {
let touchPoint = longPressGestureRecognizer.location(in: self)
if let indexPath = self.eventsTableView.indexPathForRow(at: touchPoint) {
print(indexPath.row) //print the current *displayed* cell index
}
}
}
Система распознает длинное нажатие , но я столкнулся с проблемой .Этот код:
let indexPath = self.tableView.indexPathForRow(at: touchedPoint)
, который предполагает распознать indexPath прослушиваемой ячейки, кажется, находит индекс прослушиваемой ячейки, который в данный момент отображает .Я имею в виду, что если есть 20 ячеек выше, которые в данный момент не отображаются устройством, indexPathForRow
будет игнорировать их и считать только отображаемые ячейки.Так, например, если у меня есть 30 строк в табличном представлении, и пользователь в настоящее время просматривает ячейку в 23-й строке, система будет считать эту ячейку (например) в 4-й строке, потому что это 4-я ячейка, котораяв настоящее время отображается.
Я понятия не имею, есть ли связь с тем фактом, что этот tableView находится в представлении коллекции, но я надеюсь, что эта дополнительная информация поможет вам помочь (:
Многиеспасибо!