#iphone #model-view-controller #uiview
#iPhone #модель-представление-контроллер #uiview
Вопрос:
Я новичок в платформе iOS и слышал об архитектуре MVC. Чтобы нарисовать круг, я просто создаю отдельный класс UIView и переопределяю drawRect: и могу это сделать.
Но теперь я хочу перестроить тот же проект, используя архитектуру MVC.Основная цель — отделить мою часть модели от части представления и контроллера.Чтобы я мог расширить свой проект.
Итак, как я могу это сделать?
Любой пример приложения для справки?
Комментарии:
1. Для меня это не имеет особого смысла. Рисование круга — это просто часть представления. В рисовании круга нет модели или контроллера. Для MVC вам понадобится что-то более сложное.
2. На самом деле я хочу изменить его форму, размер, цвет. Затем можно выполнять различные операции с кругом, такие как поворот, масштабирование, панорамирование… Наконец, сохраните все данные в постоянном хранилище… например, NSCoding / NSKeyedArchiver.
Ответ №1:
Я не уверен, что вы хотите отделить. Рисование круга обычно вписывается в «видовую» часть архитектуры MVC, что вы уже сделали. Код, который, например, изменил бы цвет круга, будет находиться в части «Контроллер», которая в iOS является UIViewController. Если у вас есть что-то, хранящее информацию о том, как выглядит круг (например, размер, цвет и т. Д.), Это можно считать частью модели и может храниться в своем собственном классе, извлекаться контроллером представления и передаваться в представление, когда это необходимо.
Вот ссылка, которая может помочь.
http://www.bit-101.com/blog/?p=1969
Что касается модели, Core Data — это технология, которая может помочь.
Ответ №2:
Разделением будет код чертежа в drawRect и размер и местоположение в модели, при этом контроллер получает атрибуты круга из модели, запрашивает чертеж и передает атрибуты в представление. Моделью может быть другой класс или класс, предоставляемый API, такой как NSDictionary.
Создав отдельную модель, если было несколько кругов, контроллер мог сделать несколько запросов на рисование, по одному на круг модели. Или может быть несколько представлений, в которых будут нарисованы круги, или разные представления, такие как текстовый список кругов, приписанных в одном представлении, и графические круги в другом.
Многие шаблоны кажутся тривиальными и не особенно полезными в тривиальном случае, но в реальной программе работают очень хорошо.