Как вызвать CollectionViewController из ячейки представления коллекции - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть файл swift, который является классом типа UICollectionViewCell, и у меня есть кнопка, которую я хочу вызвать другой вид, который является коллекцией viewconcontroller.Как мне это сделать?

Я пытаюсь это сделать, но не могу завершить эту функцию

func handleStartButtonClick(){
    let layout = UICollectionViewFlowLayout()
    let mainViewController = MainViewController(collectionViewLayout: layout)
}

1 Ответ

0 голосов
/ 07 декабря 2018

Вы должны объявить протокол делегата, и ваш контроллер должен соответствовать этому протоколу.Затем вы объявляете переменную этого делегата в своей ячейке, и в функции cellforitemat вы делаете что-то вроде этого: в вашем swift-файле CollectionViewCell из вашего класса объявляется протокол:

protocol MyCollectionViewCellDelegate {
    func someThingThatMyControllerShouldDo()
}

class MyCollectionViewCell: UICollectionViewCell {

}

, затем внутри вашего класса CollectionViewCell:

var delegate: MyCollectionViewCellDelegate?

в функции cellForItemAt вашего контроллера вы можете инициализировать значение этой переменной для вашего контроллера:

cell.delegate = self

затем в вашем CollectionViewCell, когда вы хотите, чтобы ваш контроллер что-то делал, вы простовызовите функции вашего делегата:

self.delegate?.someFunctionDeclaredInDelegate()

и, конечно, ваш ViewController должен соответствовать этому протоколу, это означает, что он должен реализовывать эти методы протокола:

extension MyViewController: MyCollectionViewDelegate {
    func someThingThatMyControllerShouldDo() {
        self.performSegue(withIdentifier: "ShowMySecondController", sender: nil)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...