gpt4 book ai didi

ios - 在 CarPlay 应用程序中显示加载事件指示器,如 Apple 文档所述,您应该

转载 作者:行者123 更新时间:2023-12-04 13:53:05 27 4
gpt4 key购买 nike

根据Apple's Documentation应该显示 Activity Indicator表示某些内容正在加载或需要时间显示在屏幕上。这是合理的,我很乐意这样做......
enter image description here
我觉得我遗漏了一些明显的东西,但我无法弄清楚如何在 CarPlay 应用程序的模板中显示事件指示器,因为我无权访问该 View 。我只能与可用的模板进行交互。
如果我试图匹配 Apple 文档中的图像,我假设我需要使用 listTemplate以及一些如何将事件指示器添加到其中。
有没有其他人遇到过这个?任何帮助,将不胜感激!

WWDC (7/2021) 期间来自 Apple 工程师的更新
我在 WWDC21 期间问了这个问题,得到了以下回复。
如果您使用 CPListTemplate ,系统将调用您的-[CPListItem handler]当用户点击列表项时。系统为您的处理程序提供了一个完成 block ,您应该确保在您的应用程序完成处理用户的选择后调用它。如果您的应用程序没有立即调用完成 block ,那没关系!也许您的应用需要执行需要一些时间的网络请求。如果尚未调用完成 block ,系统将在短暂延迟后自动将微调器添加到您的列表项。
另一种选择可能是显示带有单个列表项的列表模板,该列表项指示其余项仍在加载/进行中。
特别是对于选项卡栏模板,您可以更新已显示的选项卡。例如,如果绝对不能在应用启动时立即显示它们,您可以动态添加一个或多个选项卡。
或者,对于全屏演示,您可以演示 CPAlertTemplate指示您的应用程序中的错误或加载状态。

最佳答案

我遇到了和你一样的问题 - 从 API 异步加载内容时,我找不到如何显示加载微调器。 Apple Docs 在试图解决这个问题时并没有多大帮助。经过大量测试,尤其是在汽车中真正的 CarPlay 设备上,我有了答案。
对我来说,在 MPPlayableContentDataSource 的 beginLoadingChildItems() 中请求数据时,如果我在几秒钟内没有调用 beginLoadingChildItems() 的完成处理程序,那么 CarPlay 屏幕上会显示一个加载微调器 .因此,CarPlay 调用 beginLoadingChildItems(),我发出 API 请求,只有当请求返回数据(或失败)时,我才调用 beginLoadingChildItems() 的完成处理程序。大多数情况下,API 请求会很快返回并且加载微调器不会显示。但是当 API 很慢时(由于连接不稳定,几秒钟),加载微调器会显示。
我的 MPPlayableContentDataSource beginLoadingChildItems() 看起来像:

class CarPlayContentManager: NSObject, MPPlayableContentDataSource {

private let contentProvider = ContentProvider()

func beginLoadingChildItems(at indexPath: IndexPath, completionHandler: @escaping (Error?) -> Void) {

// Make a request to fetch data from the API, passing in completionHandler
contentProvider.fetchContentItems(completionHandler: completionHandler)
}

}
ContentProvider 只是一个获取数据的辅助类:
class ContentProvider {

func fetchContentItems(completionHandler: @escaping (Error?) -> Void) {

// Make the async API request
// When the API request returns (either as success or error) call completionHandler(nil)
}

}
注意:您可以通过在 beginLoadingChildItems() 中设置延迟来测试加载微调器。调用 beginLoadingChildItems() 时,只需设置 5 秒的延迟,然后在 5 秒结束后调用 completionHandler(nil)。这应该会在 CarPlay 屏幕上显示加载微调器。

关于ios - 在 CarPlay 应用程序中显示加载事件指示器,如 Apple 文档所述,您应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67273310/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com