【发布时间】:2022-06-17 19:48:27
【问题描述】:
随着iOS 15.4(2022 年 3 月 14 日)的更新,CarPlay 应用中的状态更新 (SwiftUI) 似乎已被破坏。
我已将代码简化为以下示例。请注意,这在 iOS+CarPlay 15.3 中可以正常工作。这也适用于运行 15.4 的 iOS(仅限)应用。
struct ContentView: View {
@State private var test: Int = 0
var body: some View {
VStack {
Text("Seconds elapsed: \(self.test)")
}
.onAppear {
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { timer in
self.test += 1
}
}
}
}
我可以得出结论,SwiftUI CarPlay 应用程序中的状态未更新。有没有更新状态的新方法?我似乎无法确定我可能错过的任何事情。也许使用 SwiftUI 还没有完全支持 CarPlay 集成。
我还修改了代码以使用顶部的菜单按钮来增加self.test。这也没有任何效果。
配置信息
CarPlay 应用是使用 Info.plist 设置的。
Application Scene Manifest
> Scene Configuration
>> CPTemplateApplicationSceneSessionRoleApplication (Array)
>>> Item 0
>>>> UISceneDelegateClassName = $(PRODUCT_MODULE_NAME).AppDelegate
>>>> UISceneConfigurationName = Default Configuration
我在AppDelegate 中收听CPTemplateApplicationSceneDelegate 并相应地提交相应的模板。然后我将UIHostingController 绑定到CPWindow 的rootViewController 属性。
我很想了解导致这种状态更新不足的原因。不知道我在这里缺少什么。非常感谢您的努力和回复。
【问题讨论】:
-
您是否尝试过使用设备和汽车?
-
是的。在设备和实际汽车(现场环境)上都进行了尝试。不过感谢您的建议!
-
你能在应用委托中显示代码吗?