CollectionView в CollectionView: Использование didSelectItemAt для выполнения сегмента - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть collectionView внутри collectionView, и я хочу иметь возможность выбрать ячейку во втором collectionView для выполнения перехода к другому ViewController.

В настоящее время, когда я выбираю ячейку, я получаю следующее сообщение: «Получатель ... не имеет перехода с идентификатором« ToVC2 »."

Однако я использовал этот идентификатор / идентификатор из других кнопок UIB, и он работает.


У меня есть два ViewController: ViewController1 и ViewController2.

В ViewController1 есть collectionView ("categoryCollectionView"), который имеет вертикальную прокрутку.

Внутри categoryCollectionView есть еще один collectionView («eventCollectionView»), который позволяет горизонтальную прокрутку.

Два collectionViews настроены и работают правильно для numberOfItemsInSection и cellForItemAt. Теперь я хочу иметь возможность выбрать ячейку в eventCollectionView и вызвать переход от ViewController1 к ViewController2.

Я добавил функцию в ViewController1:

func segueToViewController2(event: Event){

    performSegue(withIdentifier: "ToVC2", sender: event)

}

Внутри функции EventCollectionView didSelectItemAt я пробовал следующее:

var viewController1: ViewController1? = ViewController1()
viewController1.segueToViewController2(event: eventSelected)

Когда я выбираю ячейку, я получаю следующее сообщение об ошибке:

'Receiver () не имеет перехода с идентификатором' ToVC2 ''

Однако эта функция выполняет переход правильно, если вызывается из обычного UIButton на ViewController1 (поэтому я знаю, что проблема не в том, что нет перехода / идентификатор неверен.) Я считаю, что проблема заключается в том, что функция вызывается из коллекции ViewView в коллекции Collection.

Пожалуйста, помогите !!!!!

1 Ответ

0 голосов
/ 13 апреля 2019

Я считаю, что проблема в том, что когда вы вызываете var viewController1: ViewController1? = ViewController1(), вы инициализируете новый экземпляр ViewController1.Это, вероятно, не то, что вы собираетесь делать.Исходя из того, что вы сказали, вы должны передать ссылку вниз по иерархии созданных представлений коллекции, чтобы ваш didSelect мог вызывать функцию segue в исходном экземпляре ViewController1.В идеале для этого вы должны использовать шаблон проектирования, такой как делегирование.

...