iPad: шаблон проектирования для иерархии контроллеров в UISplitViewController? - PullRequest
1 голос
/ 19 мая 2011

Ситуация: Пользовательский интерфейс приложения основан на UISplitView с двумя UINavigationController s слева и справа. Несколько пользовательских представлений с соответствующими им UIViewController s встроены в каждый UINavigationController.

Некоторые возможные подходы: Документация класса предлагает использовать delegate s для связи между подпредставлениями, как продемонстрировано также в этого превосходного урока . Если это будет сделано на уровне пользовательских представлений (внутри каждого UINavigationController, как это делают и шаблон Apple, и учебник Рэя), это в конечном итоге станет утомительным, так как потребуются делегаты для обработки всех возможных комбинаций контроллеров представления. Так что, кажется, лучше создать подкласс каждого UINavigationController и установить делегирование только между этими двумя. В этом случае, однако, навигационные контроллеры, возможно, должны будут передать информацию своим субконтроллерам, о которой они не должны знать - протокол делегирования должен будет предоставить методы для широкого спектра событий, которые могут произойти, и подклассы стать очень специфичным для приложения и дублировать общение подпредставлений. Как предлагается в ответе в этом посте , есть еще две возможности: а) цепочки респондентов и б) уведомления.

Вопрос: Какой шаблон проектирования лучше всего подходит для такой ситуации?

1 Ответ

2 голосов
/ 24 мая 2011

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

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

Практическое применение: Для связи контроллеров представления слева направо делегирование - как рекомендовано в документации Apple - действительно наиболее практично. Если левое представление должно реагировать на правое представление (что редко встречается в парадигме мастер / детализация), я использовал KVO, так как обычно обновления такого типа могут запускаться объектами модели, а KVO идеально подходит для одного ко многим. шаблоны общения. Я не видел использования механизма целевого действия для связи контроллера.

Обновление: Я нашел другое сообщение в блоге, посвященное этой конкретной ситуации на Какао - моя подруга , см. Также раздел комментариев этой записи. Эта публикация является немного базовой и не охватывает рабочий процесс более сложного приложения, но все же полезна для просмотра других подходов к этому виду дизайна. Кроме того, существует руководство Рэя Вендерлиха , в котором такой дизайн рассматривается на простом, хотя и практическом примере.

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