Контроллер iPhone One, несколько просмотров - PullRequest
2 голосов
/ 22 октября 2009

Я довольно новичок в разработке для iPhone, и мне интересно, как загрузить несколько представлений с одного контроллера.

Я пришел из c # фона и все еще пытаюсь понять, как все работает в ObjC и мирах iPhone.

В качестве основного примера того, чего я пытаюсь достичь, скажем, у меня есть ClockController, у контроллера часов есть базовые методы для вычисления времени.

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

Допустим, у меня есть один вид, который отображает часы как цифровой выход, а другой - как аналоговый дисплей (базовый пример, который я знаю).

Как можно этого достичь?

Извините, если это очень простой вопрос, но я новичок в этом.

Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 22 октября 2009

Вот мое понимание того, как применить MVC к вашему примеру:
Часы, которые вы рисуете на экране, являются внутренними представлениями, каждый из которых поддерживается экземпляром вашего класса контроллера представления часов. Каждый из этих контроллеров взаимодействует с моделью часов и обновляет их представления по мере необходимости. Именно в этом классе будет установлено свойство, определяющее, являются ли часы цифровыми или аналоговыми.
Похоже, ваш "ClockController" действительно класс модели / данных. Вы можете иметь только один экземпляр этого класса модели или по одному для каждого из ваших контроллеров представления часов (если у них разное время).

1 голос
/ 22 октября 2009

В моих приложениях у меня много экземпляров одного контроллера представления, который затем использует разные или несколько представлений для отображения пользовательского интерфейса. Вы можете взять представление и все его подпредставления и добавить его в контроллер представления, используя addSubView, и удалить это представление и все его подпредставления, используя removeFromSuperview. Это хорошо работает, если представление отображает только информацию и имеет подклассы для обработки своих собственных отличий от других представлений, которые должен обрабатывать контроллер представления. В вашем случае представление аналоговых часов должно отображаться в одном направлении, а представление цифровых часов - в другом. Контроллер просто должен сказать каждому представлению, какое время, и представление обрабатывает перевод в визуальные данные. Если ваше представление принимает ввод в виде пользователя, который перетаскивает аналоговые стрелки для установки будильника, то подклассу представления необходимо прочитать этот вход, а затем преобразовать в время будильника и передать его обратно контроллеру представления. Контроллеру не нужно знать, с каким типом часов взаимодействует пользователь, а видит только время будильника, которое необходимо добавить в свою очередь будильника.

Однако, когда у меня есть представления, которые используют очень разные пользовательские интерфейсы или для разных целей, я обычно предпочитаю иметь один контроллер представления на набор представлений. По сути, я пытаюсь использовать мои представления в качестве дисплея, а мои viewControllers в качестве менеджера данных, связанных с этим представлением (и любые другие представления, которые могут быть поддержаны этими же данными).

Например, в моей игре есть один контроллер вида для игры, другой для таблицы рекордов и еще один для настроек.

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