Взлом шаблона проектирования ModelViewController
Введение
Шаблоны проектирования, которые будут рассмотрены в этой статье:
- Модель-представление-контроллер
Модель-представление-контроллер
Шаблон MVC просто разбит на 3 основные части:
- Модель — модели хранят данные приложения (обычно в виде структур или простых классов).
- Представление — представления взаимодействуют со своим контроллером через IBActions.
- Контроллер представления — Контроллеры координируют между моделями и представлениями
Важно отметить
- Модели и представления не должны содержать строгие ссылки на свой собственный контроллер, потому что это вызовет цикл сохранения.
- Используйте шаблон проектирования MVC в качестве отправной точки и будьте открыты для реализации других шаблонов при создании приложения.
Код
- При реализации шаблона проектирования MVC удобно организовывать файлы пакета приложений с помощью каталогов модели, представления и контроллера.
Модель
- Я создал простую структуру, представляющую одного программиста.
Вид
- Я создал IBOutlet для каждого из свойств, которые у меня есть в модели Programmer.
- Я установил класс элемента UIView по умолчанию для представления, которое я настроил программно (ProgrammerView).
- Я перетащил 3 UITextField из нашей библиотеки объектов и поместил их в UIView.
- Идите вперед и соедините 3 UITextFields с IBOutlets, используя инспектор соединений UIView.
- Обязательно установите ограничения Auto Layout для элементов пользовательского интерфейса.
Контроллер
- В вашем основном контроллере представления вы можете хранить сильную ссылку на представление и модель, которой он владеет.
- Задача контроллера заключается в координации между моделью и представлением → В этом случае контроллер должен обновить свое представление, используя значения из модели.
- Если программатор установлен после вызова viewDidLoad(), контроллер должен обновить ProgrammerView → Для этого можно использовать didSet.
- Это пример того, как модель может сообщить контроллеру, что что-то изменилось и что представление нуждается в обновлении.
- И наоборот, это пример того, как представление может сообщить контроллеру, что что-то изменилось и модель нуждается в обновлении.
- Я подключил IBAction ко всем трем текстовым полям в Main.storyboard.
- Чтобы увидеть, как IBAction работает с UITextField, я связал каждое из текстовых полей с одним и тем же IBAction с помощью события Editing Changed.
Предостережения
1. Не каждый объект подходит под категорию модели, представления или контроллера.
2. Остерегайтесь «Massive-View-Controller» или контроллеров представлений, которые становятся слишком большими
3. Не стесняйтесь использовать другие шаблоны проектирования поверх MVC
Заключение
Если вы еще этого не сделали, присоединяйтесь к моему серверу Discord! Я хочу создать сообщество разработчиков, чтобы мы могли укреплять, мотивировать и узнавать друг друга в нашем путешествии по программированию.
Если у вас есть какие-либо вопросы или комментарии, пожалуйста, не бойтесь спрашивать или общаться со мной в социальных сетях! Вы также можете отправить мне электронное письмо по адресу [email protected]
"Портфолио"