Вопрос о дизайне иерархических представлений в iOS

#ios #ipad

#iOS #iPad

Вопрос:

Если у меня есть иерархия представлений для отображения в моем окне (скажем, сетка, и каждая ячейка сетки представляет собой UIView с изображением подпись), как я должен реализовать это, не нарушая шаблон проектирования MVC?

Должен ли я создать MVC для каждой ячейки, а затем как я могу добавить их в основной MCV и связать его с основным представлением?

Или я должен просто создать представление ячейки и добавить его в основное представление с помощью метода addSubview?

Спасибо

ps. Я нашел этот пример, это правильно? Нужно ли мне создать контроллер, а затем добавить его представление в MainView и освободить контроллер?

 SimpleViewController *viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
[mainView addSubview:viewController.view];
[viewController release];
  

Ответ №1:

http://developer.apple.com/library/ios/#documentation/general/conceptual/DevPedia-CocoaCore/MVC.html

Объекты модели инкапсулируют данные, специфичные для приложения, и определяют логику и вычисления, которые манипулируют этими данными и обрабатывают их…

Объект представления — это объект в приложении, который могут видеть пользователи…

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

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

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

Что представляют ваши ячейки сетки? Имеет ли смысл иметь поведение и состояние, не зависящие от вида объекта модели, для этих данных?


ps. Я нашел этот пример, это правильно? Нужно ли мне создать контроллер, а затем добавить его представление в MainView и освободить контроллер?

Не делайте этого, это неправильное использование UIViewController и, вероятно, приведет к путанице. Если вам просто нужен объект view, просто создайте объект view. Вы можете загружать объекты из nib без создания дополнительного объекта контроллера, подобного этому. Посмотрите на NSBundle или UINib для альтернативных способов загрузки объектов из файлов nib.