Недавно я обнаружил, что UIView
должны иметь только UIViewController
, когда они заполняют все окно (или управляются другим UIViewController
, например ] UINavigationController
или UISplitViewController
). Эта цитата взята из документации для UIViewController :
Вы не должны использовать контроллеры представлений для управления представлениями, которые заполняют только часть своего окна, то есть только часть области, определяемой прямоугольником содержимого приложения. . Если вы хотите иметь интерфейс, состоящий из нескольких меньших представлений, встроите их все в одно корневое представление и управляйте этим представлением с помощью вашего контроллера представления.
Я обычно помещаю свою логику представления в UIView, даже если им управляет UIViewController , тем не менее, мне часто нужно получить доступ к свойствам UIViewController, таким как его свойство navigationController. Однако предполагается, что UIViews не должны знать о своем UIViewController.
Я пришел к выводу, что логика представления должна находиться в UIViewController UIView, когда он существует, и в самом UIView в противном случае.
В качестве альтернативы, лучше ли создавать класс контроллера для представления, которое не подкласс UIViewController? UIPopoverController (подкласс NSObject), похоже, следует этому шаблону, хотя в большинстве случаев (UIButton и т. Д.) Представления, похоже, не имеют выделенных классов контроллеров.