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() {
    super.viewDidLoad()

    fetchData()
}
   func fetchData(){
      hud.show(true)
      // doing some http request
      dispatch_async(dispatch_get_main_queue()) {
         hud.hide(true)          
      }
   }

}

  • 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()) {
            progressHUD.hide(true)
    
            // ...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. 
    
            dispatch_async(dispatch_get_main_queue())
                {
                    spinnerActivity.hideAnimated(true);
            }
    
    
        }
    

    For more information follow this tutorial:
    http://sourcefreeze.com/mbprogresshud-example-swift/

    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

    Use:

    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)
            }