2016-06-09 5 views
0

Я использую watchOS 2 и Xcode 7.3. У меня есть 3 интерфейса контроллера (IC) в приложении часов. Я отправляю сообщения на эти 3 IC из AppDelegate в 3 разных сценариях, используя метод "[WCSession defaultSession] sendMessage". Способ приема предоставляется во всех трех ИС. Но сообщение получено в основном в третьем IC. Что я должен сделать, чтобы получить сообщение в конкретной ИС.Как получить сообщение в определенном интерфейсном контроллере watchOS 2 при использовании «[WCSession defaultSession] sendMessage» из AppDelegate

ответ

2

Я бы предложил некоторые переструктурирования, так как прямо сейчас у вас есть интерфейсные контроллеры, которые выполняют «сетевые» и модельные работы.

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

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

1

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

0

Дайте didReceiveMessage метод в ExtensionDelegate.m в расширении часы приложения. Передайте имя контроллера интерфейса, которому предназначено сообщение, в sendMessage метод. В случае if-else вызовите метод в целевом интерфейсном контроллере, используя центр уведомлений.

 Смежные вопросы

  • Нет связанных вопросов^_^