Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift:具有异步Web任务的活动指示器_Ios_Swift_Api_Asynchronous_Uiactivityindicatorview - Fatal编程技术网

Ios Swift:具有异步Web任务的活动指示器

Ios Swift:具有异步Web任务的活动指示器,ios,swift,api,asynchronous,uiactivityindicatorview,Ios,Swift,Api,Asynchronous,Uiactivityindicatorview,晚上我有以下问题: 问题 我的应用程序是一个基于web的应用程序。它从API下载数据,您可以通过不同的表格视图显示结果 加载登陆页面后,应用程序开始下载数据。通过许多异步任务下载数据 我希望用户在数据全部下载并显示活动指示器之前不能使用该应用程序 我想在页面加载后立即显示活动指示器,然后在调用异步闭包时停止它 问题是,它们类似于5个异步函数,每个异步任务都使其他异步任务 那么,有没有办法了解是否有异步任务正在运行,如果有:显示指示器,如果没有:停止指示器 或者,有更好的设计模式来实现这一点?由于

晚上我有以下问题:

问题 我的应用程序是一个基于web的应用程序。它从API下载数据,您可以通过不同的
表格视图
显示结果

加载登陆页面后,应用程序开始下载数据。通过许多异步任务下载数据

我希望用户在数据全部下载并显示
活动指示器之前不能使用该应用程序

我想在页面加载后立即显示活动指示器,然后在调用异步闭包时停止它

问题是,它们类似于5个异步函数,每个异步任务都使其他异步任务

那么,有没有办法了解是否有异步任务正在运行,如果有:显示指示器,如果没有:停止指示器


或者,有更好的设计模式来实现这一点?

由于您有很多异步功能,您应该使用promise kit:

有了它,您可以管理所有请求,甚至可以对每个请求执行不同的错误处理,并随时显示或隐藏加载指示器

解决方案 正如@rmaddy所建议的,我使用了
GroupDispatch

首先,我创建了一个GroupDispatch对象

对于每个异步调用,我都将
groupDispatch
对象作为
参数传递,并且在我使用的
group.enter()
函数中,因此每次调用该函数时,它都会进入组中。 在闭包中,我使用了
group.leave()
方法

最后,我使用了
group.notify
在所有异步调用完成时收到通知


它工作得很好

查看如何使用
DispatchGroup
。请参阅和其他类似问题。阿拉莫菲尔的使用无关紧要。使用实际异步任务所需的内容。感谢您的回答。但我不想使用外部库,所以你可以实现“投票”,每个任务有一票,当所有人都投票后,你可以隐藏你的HUD。