Как выполнитьSegue или перейти к другому представлению из ячейки, когда суперклассом основного класса является UICollectionViewCell - PullRequest
0 голосов
/ 13 октября 2019

У меня есть класс, который является типом UICollectionViewCell. В этом классе у меня есть еще один CollectionView, который, когда я выбираю ячейку этого внутреннего представления коллекции, переходит в другое представление или выполняет переход. Мне действительно нужна помощь с этим, так как класс CollectionViewCell и performSegue() не работает.

class MyGamesController: UICollectionViewCell,UICollectionViewDelegateFlowLayout,UICollectionViewDataSource, UICollectionViewDelegate {


    func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {


      // performSegue is not working here


    }
}

1 Ответ

0 голосов
/ 13 октября 2019

Вы можете делать то, что вы ищете, используя быстрые протоколы. Читать дальше ЗДЕСЬ

Сначала вам нужно знать, что performSegue() работает на UIViewController

Вынеобходимо создать протокол для вашего collectionViewCell, я думаю, что здесь MyGamesController выглядит так:

protocol MyGamesControllerDelegate {
func insidCellDidSelect()
}

И добавьте его экземпляр в ваш класс:

var delegate : MyGamesControllerDelegate?

Теперькогда вы звоните delegate?.insidCellDidSelect в didSelectItemAt вашего MyGamesController, вы можете запустить его в своем родительском VC, выполнив следующие шаги:

Когда вы создаете экземпляр MyGamesController, то есть в cellForItemAtприкрепите делегат ячеек к родительскому элементу ViewController, который создает его следующим образом:

   class TheVCYouWantToPerformSegue : MyGamesControllerDelegate {
   ...

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
    let cell = ... as! MyGamesController
    cell.delegate = self

Затем вы можете внедрить метод протоколов в теле VC и получить уведомление:

func insidCellDidSelect() {
//Perform Segue goes here
}
...