我正在尝试创建两个函数。一个开始progressHUD
,一个停止hud
。我在UIViewController
的扩展名中创建了这个。功能如下:
func startProgressHUD() {
let spinningActivity = MBProgressHUD.showAdded(to: self.view, animated: true)
spinningActivity.label.text = "Loading"
}
func stopProgressHUD() {
DispatchQueue.main.async {
MBProgressHUD.hide(for: self.view, animated: true)
}
}
第一个函数在调用时工作正常 - > HUD开始了。
但是,当我调用stop函数时,HUD永远不会停止。根据描述,我在stop函数中调用的hide函数隐藏了视图中最顶层的HUD
。我只在视图中打开了一个HUD
,但HUD
永远不会停止。
如果我使用:
func stopProgressHUD() {
DispatchQueue.main.async {
MBProgressHUD.hideAllHUDs(for: self.view, animated: true)
}
}
我没有问题,但已弃用hideAllHUDs
功能 - >警告声明,在每个视图中使用多个HUD时存储引用。
如何让HUD停止?
答案 0 :(得分:2)
将spinningActivity
声明为ViewController
中的全局变量。无论何时需要HUD,您都可以self.spinningActivity = MBProgressHUD.showAdded(to: self.view, animated: true)
。当你不再需要它时,self.spinningActivity?.hide()
答案 1 :(得分:0)
全局声明MBProgressHUD,然后显示并隐藏它。它肯定会起作用