How to use MBProgressHUD with swift

here is my code , but it showing the progress . is there any error in this code? please give some idea to fix this, or give some link related to this.

class Approval: UIViewController {

var hud: MBProgressHUD = MBProgressHUD()

override func viewDidLoad() {

   func fetchData(){
      // doing some http request
      dispatch_async(dispatch_get_main_queue()) {


  • Check if app has a notfication using private frameworks?
  • Convert NSString->NSDate?
  • Xcode 5.1: missing required architecture arm64
  • Swift Accessing year from UIDatePicker
  • RestKit Core Data NSError dealloc Crash
  • Storyboard in IOS 5 SDK but also target IOS 4 /3?
  • 9 Solutions Collect From Internet About “How to use MBProgressHUD with swift”

    Try this:

    let loadingNotification = MBProgressHUD.showHUDAddedTo(self.view, animated: true)
    loadingNotification.mode = MBProgressHUDMode.Indeterminate
    loadingNotification.labelText = "Loading"

    To dismiss the ProgressHUD:

    MBProgressHUD.hideAllHUDsForView(self.view, animated: true)

    You can also try this approach which will keep the other activity running in the background allowing the UI to remain responsive, providing users with a better experience. This is the intended/recommended approach for using the MBProgressHUD.

    let progressHUD = MBProgressHUD.showHUDAddedTo(self.view, animated: true)
    progressHUD.labelText = "Loading..."
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0)) {
        // ...Run some task in the background here...
        dispatch_async(dispatch_get_main_queue()) {
            // ...Run something once we're done with the background task...

    Swift 3 extensions

    import Foundation
    import MBProgressHUD
    import QuartzCore
    extension UITableViewController {
        func showHudForTable(_ message: String) {
            let hud = MBProgressHUD.showAdded(to: self.view, animated: true)
            hud.label.text = message
            hud.isUserInteractionEnabled = false
            hud.layer.zPosition = 2
            self.tableView.layer.zPosition = 1
    extension UIViewController {
        func showHud(_ message: String) {
            let hud = MBProgressHUD.showAdded(to: self.view, animated: true)
            hud.label.text = message
            hud.isUserInteractionEnabled = false
        func hideHUD() {
            MBProgressHUD.hide(for: self.view, animated: true)
    // Use extensions

    Go through the below code

    class ViewController: UIViewController,MBProgressHUDDelegate {
    var hud : MBProgressHUD = MBProgressHUD()
    func fetchData()
      hud = MBProgressHUD.showHUDAddedTo(self.view, animated: true)
      hud.mode = MBProgressHUDModeIndeterminate
      hud.labelText = "Loading"

    If you want to dismiss the HUD

    MBProgressHUD.hideHUDForView(self.view, animated: true)

    Use the below code to render MBProgressHUD and after some action completed hide it as described.

    let spinnerActivity = MBProgressHUD.showHUDAddedTo(self.view, animated: true);
    spinnerActivity.label.text = "Loading";
    spinnerActivity.detailsLabel.text = "Please Wait!!";
    spinnerActivity.userInteractionEnabled = false;
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0))
            // Add some background task like image download, wesite loading. 

    For more information follow this tutorial:

    Added to @EricDXS’s answer,

    The Swift 3 version is here

    To show:

     let loadingNotification = MBProgressHUD.showAdded(to: self.view, animated: true)
    loadingNotification.mode = MBProgressHUDMode.indeterminate
    loadingNotification.label.text = "Loading"

    To dismiss:

     loadingNotification.hide(animated: true)

    I solved it like this:

    import UIKit
    class Loader: NSObject {
        class func show(message:String = "Processing...", delegate: UIViewController) {
            var load : MBProgressHUD = MBProgressHUD()
            load = MBProgressHUD.showHUDAddedTo(delegate.view, animated: true)
            load.mode = MBProgressHUDMode.Indeterminate
            if message.length > 0 {
                load.labelText = message;
            UIApplication.sharedApplication().networkActivityIndicatorVisible = true
    class func hide(delegate:UIViewController) {
        MBProgressHUD.hideHUDForView(delegate.view, animated: true)
            UIApplication.sharedApplication().networkActivityIndicatorVisible = false

    Try it with Swift 3:

    func showLoadingHUD(to_view: UIView) {
            let hud = MBProgressHUD.showAdded(to: to_view, animated: true)
            hud.label.text = "Loading..."
    func hideLoadingHUD(for_view: UIView) {
            MBProgressHUD.hideAllHUDs(for: for_view, animated: true)

    If Swift compiler warning: hideAllHUDs is deprecated. We should store references when using more than one HUD per view


    func hideLoadingHUD(for_view: UIView) {
        MBProgressHUD.hide(for: for_view, animated: true)

    step 1 : Download “MBProgressHUD.h” and “MBProgressHUD.m” file and Add both file into your project. it will ask you to Bridging for Objective C files. if you already done bridging then it won’t ask.

    step 2 : In Bridging File import MBProgressHUD “import MBProgressHUD.h”

    step 3 : use below code to show progress hud or hide hud.

    for Show

    DispatchQueue.main.async {
                MBProgressHUD.showAdded(to: self.view, animated: true)

    for hide

    DispatchQueue.main.async {
                MBProgressHUD.hide(for: self.view, animated: true)