2012-04-23 3 views
1

У меня есть контроллер для просмотра без наконечника. Я создаю представление в коде. Я делал это, как это в viewDidLoadЧто было бы лучшей практикой MVC в таком случае?

UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 475, 50.0)]; 
self.headerView = header; 
self.headerView.backgroundColor = [UIColor yellowColor]; 
[self.view addSubview:self.headerView]; 

UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, self.view.height - 50.0, 475, 50.0)]; 
self.footerView = footer; 
self.footerView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin; 
self.footerView.backgroundColor = [UIColor greenColor]; 
[self.view addSubview:self.footerView]; 

и так далее. Однако, поскольку мой viewDidLoad становится длиннее и длиннее, я чувствую, что это, возможно, не должно быть в моем контроллере. Должно ли это быть подклассом UIView, который затем загружается в мой viewDidLoad? Какова наилучшая практика MVC для такого рода ситуаций?

+0

Согласен с @gcamp и JeremyP. Но не нужно переоценивать раньше. Запишите себе, что ваш viewLoad становится уродливым, и создайте свой подкласс, как только вы начнете понимать все, что другие вещи должны делать специальные. (например, оба они могут быть подклассами общего подкласса). Сделай это, когда узнаешь больше, и ласково позаботиться об этом! – danh

ответ

1

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

Если это не так, вы можете просто добавить способ createHeader, который вы бы назвали от viewDidLoad.

1

Должно ли это быть подклассом UIView, который затем загружается в мой viewDidLoad?

На мой взгляд: да. У меня, вероятно, был бы класс для представления контроллера, и это создало бы представления верхнего и нижнего колонтитула (которые сами могли бы быть подклассифицированы из UIView).

Какова наилучшая практика MVC для такого рода ситуаций?

Эти виды и подпрограммы являются частью части «V» MVC. Чем больше я думаю об этом, тем больше я думаю, что, поскольку у вас есть вещи на данный момент, контроллер выполняет некоторую работу «V». Я не говорю, что это обязательно плохо, но вы, безусловно, должны думать о лучшем разделении, поскольку код создания вашего представления становится больше.

0

Контроллер обычно является «боссом» - он объединяет модель и вид. Таким образом, он может иметь глубокое знание обоих слоев. Из этого следует, что создание иерархии представления не обязательно является плохим, хотя, как отметил @danh, вы должны принять решение по каждому случаю. Если код начинает «пахнуть», чем идти вперед и реорганизовать его. Если ваша иерархия просмотров начинает становиться действительно сложной, вам может потребоваться ввести дополнительные контроллеры, которые будут делить responsiblites. Например, у вас может быть контроллер для обработки заголовка, другой для обработки нижнего колонтитула и т. Д.

Смежные вопросы