@nuSan
Программист

TapGesture, как определить элемент который нажал, или почему не работает CollectionView при нажатии на ячейку?

У меня на ViewController есть CollectionView, он нормально заполняется - но при нажатии на него ничего не происходит, причём все соединения подключены. Советуют проверить по TapGesture - что происходит когда нажимаешь, но я не знаю как это сделать, помогите плиз , как вывести то.. на что нажал, и точку на экране которую нажимаю.
  • Вопрос задан
  • 154 просмотра
Решения вопроса 1
@nuSan Автор вопроса
Программист
Всё подключено правильно, но не работает метод делагата UICollectionViewDelegate - а так всё подключено правильно. щас попробую ещё с точками Gesture повозиться - может что-то перекрывает его, хотя не видно что это так((((
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@i_allar
ну по тапу это окольный путь. вам нужно чтоб вызывался метод didSelectItemAtIndexPath UITableViewDelegate. для того, чтоб это произошло кликните правой по таблице в сториборде и убедитесь что делегат протянут в контроллер. затем кликните в сториборде на ячейку и убедитесь что у нее userEnteractionEnabled галочка стоит
Ответ написан
maximglobak
@maximglobak
iOS developer
Для коллекции немного другой делегат, но смысл его в том же.
Тап гестуре лучше ставить в случае когда тебе нужно тащить эту ячейку куда-то. Т.е. совершать какие-то еще действия (гестуре) с этой ячейкой.
Если просто нужно кликнуть по ячейке, то лучше использовать делигатный метод
collectionView:didSelectItemAtIndexPath:
И все же немного кода для поиска ячейки в коллекции
//Сначала регистрируешь гестуре, потом определяешь функцию, которую он вызывает и в этой функции пишешь следующее
//Это точка нажатия относительно коллекции
    CGPoint gestureLocationInCollectionView = [gesture locationInView:self.collectionView];

// А тут находим индекс пас, но при его использовании проверяй всегда есть ли он на самом деле.
    NSIndexPath *indexPathForLocation = [self.collectionView indexPathForItemAtPoint:gestureLocationInCollectionView];

if (indexPathForLocation) {
//Code here 
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы