Ios Swift:具有异步Web任务的活动指示器
晚上我有以下问题: 问题 我的应用程序是一个基于web的应用程序。它从API下载数据,您可以通过不同的Ios Swift:具有异步Web任务的活动指示器,ios,swift,api,asynchronous,uiactivityindicatorview,Ios,Swift,Api,Asynchronous,Uiactivityindicatorview,晚上我有以下问题: 问题 我的应用程序是一个基于web的应用程序。它从API下载数据,您可以通过不同的表格视图显示结果 加载登陆页面后,应用程序开始下载数据。通过许多异步任务下载数据 我希望用户在数据全部下载并显示活动指示器之前不能使用该应用程序 我想在页面加载后立即显示活动指示器,然后在调用异步闭包时停止它 问题是,它们类似于5个异步函数,每个异步任务都使其他异步任务 那么,有没有办法了解是否有异步任务正在运行,如果有:显示指示器,如果没有:停止指示器 或者,有更好的设计模式来实现这一点?由于
表格视图
显示结果
加载登陆页面后,应用程序开始下载数据。通过许多异步任务下载数据
我希望用户在数据全部下载并显示活动指示器之前不能使用该应用程序
我想在页面加载后立即显示活动指示器,然后在调用异步闭包时停止它
问题是,它们类似于5个异步函数,每个异步任务都使其他异步任务
那么,有没有办法了解是否有异步任务正在运行,如果有:显示指示器,如果没有:停止指示器
或者,有更好的设计模式来实现这一点?由于您有很多异步功能,您应该使用promise kit:
有了它,您可以管理所有请求,甚至可以对每个请求执行不同的错误处理,并随时显示或隐藏加载指示器 解决方案
正如@rmaddy所建议的,我使用了GroupDispatch
首先,我创建了一个GroupDispatch对象
对于每个异步调用,我都将groupDispatch
对象作为参数传递,并且在我使用的group.enter()
函数中,因此每次调用该函数时,它都会进入组中。
在闭包中,我使用了group.leave()
方法
最后,我使用了group.notify
在所有异步调用完成时收到通知
它工作得很好 查看如何使用DispatchGroup
。请参阅和其他类似问题。阿拉莫菲尔的使用无关紧要。使用实际异步任务所需的内容。感谢您的回答。但我不想使用外部库,所以你可以实现“投票”,每个任务有一票,当所有人都投票后,你可以隐藏你的HUD。