Разделение вида / контроллера с программным видом - PullRequest
0 голосов
/ 23 апреля 2011

Я делаю класс на основе UIView для использования в качестве tableHeaderView. Он будет иметь несколько элементов управления, которые будут основаны на режиме редактирования - некоторые будут появляться / исчезать, а некоторые изменят внешний вид при переключении режимов. Высота самого вида изменится, когда он переключит режимы. Видя, что макет сильно изменится, я решил, что было бы лучше просто сделать все это программно, чем пытаться выложить его в кончике.

Я борюсь с тем, где должно быть разделение вида / контроллера. Должен ли viewcontroller иметь объект для каждого элемента управления (UITextField, UISegmentedControl, UIButton и т. Д.) Или он должен просто иметь экземпляр моего класса на основе UIView?

Где должен находиться код, который фактически создает элементы управления и задает свойства? Должен ли мой вид иметь метод, который вызывается для установки всего вида (в зависимости от режима редактирования), или это увеличивает мощность представления, которое должно быть в контроллере? Должен ли вид устанавливать только положения элементов управления? Или даже не должно быть класса, основанного на UIView - контроллер представления сам объявит и настроит все элементы управления?

Какое здесь правильное разделение MVC?

Jorj

1 Ответ

0 голосов
/ 23 апреля 2011

Практическое правило MVC гласит, что ваш контроллер является посредником - если ваша модель хранит информацию о режиме редактирования, то ваш код будет чище, если контроллер выполнит работу. Если настройки режима редактирования отбрасываются, когда представление исчезает, контроллеру не нужно знать о них.

Также стоит подумать, будет ли этот код повторно использоваться - если вы создаете представление, которое собираетесь использовать снова в другом месте, это может упростить решение о том, где должны располагаться «мозги» кода. .

...