Как рассказать UIView о событии в collectionviewcell? - PullRequest
0 голосов
/ 06 февраля 2020

Справочное изображение

Здравствуйте!

Я делаю проект Swift с использованием шаблона MVC, и я надеюсь, что вы, ребята, могли бы помочь мне с как лучше всего передавать информацию между различными классами.

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

Проект построен с Model, это простой класс с правилами проекта, View Controller, который имеет экземпляр как View, так и Model, передает информацию между ними и инициирует View.

View имеет все переменные элемента и устанавливает макет. Представление имеет CollectionViewController, который, в свою очередь, имеет CollectionViewCells. В одной из этих ячеек есть кнопка. Конечно, есть и другие классы, но они не имеют отношения.

То, что я пытаюсь сделать sh, - это то, что я хочу, чтобы пользователь нажимал кнопку в CollectionViewCell. Затем CollectionViewCell должен сообщить представлению, что кнопка была нажата, а представление должно получить некоторую информацию и отправить ее в ViewController, который будет интерпретировать ее для модели.

Больше или меньше Button> Пользовательские клики -> ( CollectionViewController) -> View> View собирает информацию -> CollectionView -> Model.

Я не могу делегировать событие buttonclick представлению, так как нельзя делегировать UIViews. Я могу использовать Closure для отправки события buttonclick в CollectionViewController, но, похоже, я не могу отправить его дальше оттуда.

Так что две альтернативы, на которые я смотрю, это создание NotificationCenter просто сказать, что View была нажата кнопка, или сделать View ViewController тоже. Ни то, ни другое не кажется идеальным. У кого-нибудь есть лучшее решение или какое-либо понимание того, что я должен делать здесь?

1 Ответ

0 голосов
/ 06 февраля 2020

Одним из решений, основанных на вашем эталонном изображении, может быть следующее: вы можете отправить событие click с clouser в родительское представление collectionView и, по вашему мнению, иметь слабый экземпляр родительского viewController. когда вызывается clouser, вы можете вызвать метод из родительского экземпляра и обновить модель

...