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

У меня есть сетевое клиентское приложение iOS.Существует объект «контроллер», который отвечает за получение обновлений из сети.Он должен хранить / пересылать их на различные видимые страницы в приложении.Одна страница может нуждаться в некоторых данных, одна страница может нуждаться в другой части.Существует перекрытие.

Например, кнопка должна выделяться или не зависеть от состояния устройства в сети.Кнопки на разных страницах, возможно, должны отражать этот статус.

Мне нужно определить, должны ли мои контроллеры представления обрабатывать это или же сами элементы UI могут это делать.В моем примере мне понадобится кнопка пользовательского интерфейса для реагирования на события, возможно, основанная на ее поле «тег».

Я думал о реализации категории для «обтекания» различных элементов пользовательского интерфейса, но яЯ хотел бы использовать макет раскадровки.Это кажется запутанным.Или я могу установить теги для элементов пользовательского интерфейса и заставить включающий контроллер представления собрать их все в словарь элементов пользовательского интерфейса и выполнять просмотр / обновление, используя теги в качестве ключей.Или ...?

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

Спасибо

1 Ответ

0 голосов
/ 16 февраля 2012

Я думаю, вы должны думать об этом так:

  • Вашему приложению нужна модель, которая представляет внешнее состояние мира;в вашем случае устройства в сети.
  • Другая часть вашего приложения (вероятно, синглтон с некоторыми таймерами) отслеживает состояние мира (возможно, выполняет GETS с использованием NSURLConnection), а затем обновляет вашу модель.
  • Ваши контроллеры ViewController представляют представление пользователю, а наблюдают состояние вашей модели, сообщая, что представления меняются при изменении модели.(например, ваш viewcontroller обнаружит, что устройство в вашей модели изменило состояние на автономное, а затем установит соответствующий myButton.enabled = NO).

Ознакомьтесь с наблюдением значения ключа iOS документами, чтобы узнать больше об этом.Если вы думаете, что у вас будет много видов, наблюдающих те же аспекты модели, рассмотрите возможность использования NSNotification Center .

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