可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
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) }