How to use MBProgressHUD with swift

匿名 (未验证) 提交于 2019-12-03 01:18:02

问题:

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

回答1:

Updated Answer:

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

To dismiss the ProgressHUD:

MBProgressHUD.hideAllHUDs(for: view, animated: true) 


回答2:

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


回答3:

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 


回答4:

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) 


回答5:

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/



回答6:

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


回答7:

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) 


回答8:

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


回答9:

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


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!