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)
}
Надеюсь это поможет!