Здравствуйте!
Я создал UICollectionView
и поместил его в UIViewController
, используется метод didSelectRowAt для перехода на новый viewController
и там же передаются данные, в этих же ячейках присутствует рейтинг (pod Cosmos)
при попытке сменить рейтинг, пользователя направляет на новый view, можете подсказать как с этим бороться или поясните каким способом лучше это реализовать?
didSelectRowAt не дает поставить рейтинг в ячейках, сразу переходит на новый viewController
я наверное не совсем подробно описал проблему, рейтинг функционирует, ситуация следующая - нажимаю на рейтинг, он меняется и сразу же меня перекидывает, мне бы сделать чтобы я нажимал на рейтинг и меня его, а когда тапаю на ячейку, был переход
Все подробно вы описали. Еще раз проверьте, что бы на View с вашим рейтингом стояло isUserInteractionEnabled = true
Глянул у себя в проекте и я немного был не прав.
isUserInteractionEnabled = true - нужно, но этого мало.
Вам следует отказаться от метода didSelectItemAt.
Вам нужно в классе ячейки повесить тап на всю ячейку + тап на ваш рейтинг, который уже должен висеть. Для тапа на ячейку, делайте метод делегата didCellTap и вызывайте его при тапе на ячейку. Передавайте в нем указатель на ячейку, а в вашем VC, когда реализуете этот метод, делайте переход, такой же как делали до этого.
Я добавил тапы, но реализовать делегат с указателем не могу, вы можете найти время посмотреть проект и помочь?
В главном view кнопка Все > открывает этот view
AllPizzaViewController, AllPizzaCollectionViewCell, реализация делегатов ячеек в файле Extensions
Доступ к методам TableView из TableViewCell
Делегат вы не сделали
protocol AllPizzaCollectionViewCellDelegate: class {
func didCellTap(cell: AllPizzaCollectionViewCell)
}
class AllPizzaCollectionViewCell: UICollectionViewCell {
weak var delegate: AllPizzaCollectionViewCellDelegate?
...
func setupView() {
...
let gestureCellTap = UITapGestureRecognizer(target: self, action: #selector(didCellTap))
self.view.addGestureRecognizer(gestureCellTap)
}
@objc func didCellTap() {
delegate?.didCellTap(cell: self)
}
}
Добавляете тут
extension AllPizzaViewController: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, AllPizzaCollectionViewCellDelegate {
...
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = ...
...
cell.delegate = self
return cell
}
func didCellTap(cell: AllPizzaCollectionViewCell) {
print("tap in cell")
}
}
Спасибо за помощь, а как мне теперь передавать данные в ячейки? Они у меня в модели массивом хранятся
Use of unresolved identifier ‘tableView’; did you mean ‘UITableView’?
у меня collectionView и это обычный метод, оно не хочет отрабатывать
if let indexPath = collectionPizza.indexPathForCell(cell) {
// тут работаете с indexPath
}