Как получить живой экземпляр контроллера интерфейса в watchOS?
В моем ExtensionDelegate
Я хотел бы получить экземпляр одного из моих контроллеров интерфейса. Я использую навигацию на основе страниц.
Например, я могу сделать это в iOS
как это:
if let controller = self.tabBarController?.viewControllers?[1] as? TimesController {
controller.myVariable = nil
}
Как я могу сделать это в watchOS
?
2 ответа
Ты не можешь В watchOS нет концепции контроллера просмотра страниц, который содержал бы массив контроллеров интерфейса.
Поскольку вы не можете передать другой контекст при подготовке к переходу на страницу, вам необходимо обновить свойство этого конкретного контроллера интерфейса в пределах его willActivate()
метод:
override func willActivate() {
super.willActivate()
myVariable = ...
}
Используйте следующий код:
guard let interface = WKExtension.shared().rootInterfaceController as? InterfaceController else {
return
}
Начиная с Watch OS 4+, мы можем использовать visibleInterfaceController
:
WKExtension.shared().visibleInterfaceController
visibleInterfaceController
Возвращает последний видимый контроллер интерфейса.
Ссылка: https://developer.apple.com/documentation/watchkit/wkextension/2868459-visibleinterfacecontroller