Какой подход к дизайну я должен использовать для создания этого пользовательского представления? - PullRequest
0 голосов
/ 15 марта 2012

Я пытаюсь создать общий многоразовый вид, похожий на блокнот с подкладкой. Я решил подойти к этой проблеме (после нескольких итераций проектирования) - создать собственное представление, состоящее из UITextView и UIView.

Когда пользователь прокручивает строки текста, я хочу, чтобы UIView отслеживал направление прокрутки. Ключ здесь: В моем собственном представлении мне нужно изменить положение одного подпредставления в ответ на события в другом подпредставлении. Что-то нужно координировать эти изменения ...

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

Обычно при использовании шаблона проектирования MVC контроллер обрабатывает пользовательские события и манипулирует моделью и представлением. Однако у моего пользовательского представления нет модели - все, что я пытаюсь сделать, это заставить представление управлять своими собственными подпредставлениями, когда пользователь выполняет что-то вроде прокрутки. Мне кажется, что шаблон проектирования MVC здесь не подходит по двум причинам:

  1. Не существует модели или логики, специфичной для программы, в которой она используется.
  2. Мне кажется, что представление должно отвечать за обработку пользовательских событий, которые изменяют способ отображения.

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

Какой тип шаблона проектирования подходит в этой ситуации? MVC или ...

1 Ответ

1 голос
/ 15 марта 2012

Вы хотите, чтобы представление управляло своими собственными подпредставлениями? Тогда сделай это! Так что, если этот шаблон не имеет TLA ?

Типичным подходом является реализация layoutSubviews в вашем контейнере. Пусть он проверит свое текущее состояние или состояние других представлений в окне (например, contentOffset представления с прокруткой), а затем соответствующим образом настроит свои подпредставления. (Изменить их размер, изменить положение и т. Д.)

Просто постарайтесь держать это быстро, поскольку вполне вероятно, что layoutSubviews будет вызываться часто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...