WatchOS: передача данных с одного контроллера на другой через sege "Next Page"

Я загружаю 3 интерфейсных контроллера с WKInterfaceController.reloadRootControllers с контекстами в моем приложении.

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

Как я мог решить это? Я не хочу создавать синглтон только для этого. Я знаю, как передавать данные в контексте с другими сегментами, этот вопрос специально относится к навигации "Следующая страница" в Watchkit. Я не мог найти ответ до сих пор.

Спасибо!

Markus

1 ответ

Вы пытались использовать contextForSegue на своей первой странице?

override func contextForSegue(withIdentifier segueIdentifier: String) -> Any? {
    let myDate = "today"
    return myDate
}

Я тоже искал ответ на этот вопрос..

NextPage Segue похож на UIPageViewControllerв iOS. я пыталсяcontextForSegue(withIdentifier segueIdentifier: String) но он не вызывается свайпом, и вы не можете дать этому сегменту identifier в раскадровке.

Единственный способ обойти это для меня - использовать NotificationCenter

В первом InterfaceController я отправляю уведомление с объектом на willDisappear/didDeactivate на самом деле не имеет значения с watchOS, и на втором InterfaceController я подписался на него.

NotificationCenter.default.post(name: Notification.Name("interface1WillDisappear"), object: context)
NotificationCenter.default.addObserver(self, selector: #selector(awake(withNotification:)), name: Notification.Name("interface1WillDisappear"), object: nil)

Добавить Я добавил эту функцию

func awake(withNotification notification: Notification) {
  guard let context = context as? MyContextObject else { return }
  print(context)
}

Наконец, не забудьте удалить наблюдателя

deinit {
  NotificationCenter.default.removeObserver(self)
}

Надеюсь это поможет!

Другие вопросы по тегам