Выполнить переход в пользовательском UICollectionView, встроенном в UITableView - PullRequest
0 голосов
/ 29 августа 2018

У меня есть UITableView с пользовательскими ячейками, который включает в себя UICollectionView с горизонтальной прокруткой, что-то вроде приложения Netflix. Я пытаюсь выполнить переход всякий раз, когда пользователь нажимает на UICollectionViewCell. Однако performSegue(withIdentifier: ) недоступно в ячейках представления коллекции.

enter image description here

Я попытался использовать делегат для обработки перехода следующим образом:

На мой взгляд, класс контроллера:

func segueToNext(identifier: String) {
        performSegue(withIdentifier: identifier, sender: self)
    }

В классе UITableViewCell у меня есть методы делегата Collection View, и у меня есть этот код:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    delegate?.segueToNext(identifier: "showDiningServices")
}

segueToNext не вызывается, когда я нажимаю на ячейку. Есть ли другие способы сделать это? Спасибо!

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Внутри ВК

func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   let cell = //////
   cell.delegate = self
} 

//

, чтобы это работало, вы должны установить

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
    delegate?.segueToNext(identifier: "showDiningServices")
}

//

self.collectionView.delegate = self // self here is UITableViewCell

OR

В VC также можно реализовать делегат collectionView и источник данных, например

func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
   let cell = //////
   cell.collectionView.delegate = self
   cell.collectionView.dataSource = self
} 

затем непосредственно внедрите это в VC

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
     performSegue(withIdentifier: "showDiningServices", sender: self)  
}
0 голосов
/ 29 августа 2018

Вы можете попытаться выдвинуть контроллер представления с помощью контроллера навигации (используя метод pushViewController). Когда пользователь щелкает ячейку представления коллекции, после чего вызывается делегат представления коллекции didSelectItemAtIndexPath, и вы можете выполнить выдвижение контроллера представления в этом методе делегата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...