#ios #swift #xcode #scenekit #carplay
#iOS #swift #xcode #scenekit #carplay
Вопрос:
У меня есть приложение для навигации, и сейчас я разрабатываю панель управления CarPlay. Я не могу запустить InterfaceController после нажатия кнопки в CPDashboard.
Мой код кнопки:
let searchButton = CPDashboardButton(titleVariants: ["Find"], subtitleVariants: ["place"], image: searchImage) { [weak self] (_) in
self?.openSearchView()
}
После нажатия кнопки вызывается функция openSearchView(), но view по-прежнему остается на панели управления.
В документах нет информации, как мы можем переключаться между представлением (контроллер интерфейса <-> контроллер панели)
Ответ №1:
Не уверен, что это правильный путь, но об этом нет упоминания, даже в официальном примере приложения это не так. Но вы можете добиться этого, вызвав open(_, options:, completionHandler)
dashboardScene.
Вот так
dashboardController.shortcutButtons = [CPDashboardButton(titleVariants: ["Find"], subtitleVariants: ["place"], image: searchImage, handler: { _ in
guard let url = URL(string: "your.app.scheme://whatever/wherever") else { return }
templateApplicationDashboardScene.open(url, options: nil, completionHandler: nil)
})]
Это откроет основное приложение и вызовет open(_, urlContexts:)
основную сцену carplay, где вы можете обработать этот URL-адрес и отреагировать соответствующим образом, например, открыть поиск или что угодно.
Комментарии:
1. Вот и все! Я сделал это 3 недели назад и забыл написать ответ здесь. Спасибо за вашу помощь 😉