为MBProgressHUD创建启动和停止功能

时间:2016-12-27 05:36:55

标签: ios swift xcode function mbprogresshud

我正在尝试创建两个函数。一个开始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停止?

2 个答案:

答案 0 :(得分:2)

spinningActivity声明为ViewController中的全局变量。无论何时需要HUD,您都可以self.spinningActivity = MBProgressHUD.showAdded(to: self.view, animated: true)。当你不再需要它时,self.spinningActivity?.hide()

答案 1 :(得分:0)

全局声明MBProgressHUD,然后显示并隐藏它。它肯定会起作用