问题描述
我有导航应用,现在我正在开发 CarPlay 仪表板。单击 CPDashboard 中的按钮后,我无法启动 InterfaceController。
我的按钮代码:
let searchButton = CPDashboardButton(titleVariants: ["Find"],subtitleVariants: ["place"],image: searchImage) { [weak self] (_) in
self?.openSearchView()
}
点击按钮后,func openSearchView() 被调用,但视图仍保留在仪表板中。
文档中没有信息,我们如何在视图之间切换(界面控制器 仪表板控制器)
解决方法
不确定这是不是正确的方法,但没有提及这一点,甚至官方示例应用程序也没有这样做。但是您可以通过在dashboardScene 上调用open(_,options:,completionHandler)
来实现它。
像这样
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)
})]
这将打开主应用程序并在主 carplay 场景中调用 open(_,urlContexts:)
,您可以在其中处理该 url 并做出相应的反应,例如打开搜索等。