Должен ли UIView ссылаться на свой UIViewController? - PullRequest
6 голосов
/ 21 июня 2011

В некоторых ответах говорится, что Добраться до UIViewController из UIView? - плохая практика проектирования.

Но, LevelView из собственного примера проекта Apple BubbleLevel Xcode имеет свойство assign для его viewController.

Я думаю, что лучше всего определить протокол и назначить контроллер представления в качестве делегата представления, как вы бы это сделали с UITableView или UITextField или UITextView.

Но я могу ошибаться, поэтому мой вопрос: каков рекомендуемый способ связи представления с контроллером представления?

Ответы [ 2 ]

9 голосов
/ 21 июня 2011

Делегирование (с использованием слабой ссылки) - прекрасный способ связи представления с контроллером.Однако ваше мнение не должно знать, что оно взаимодействует с контроллером.Представление должно знать только то, что существует некоторый объект, который реализует его протокол делегата и не должен проходить через иерархию контроллера или использовать какие-либо атрибуты его делегата, которые не определены в протоколе делегата.

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

2 голосов
/ 21 июня 2011

Лучшая практика для UIView - взаимодействовать с ViewController, используя цели, которые можно определить из ViewController, используя (IBAction) для методов и (IBOutlets) для переменных. Всякий раз, когда пользователь делает какое-либо событие с представлением, он может предупредить контроллер с помощью этих IBActions, и контроллер может (общаться) с представлением, используя IBOutlets

...