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
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...
}
}
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)
Create Extension to Easy to use and throughout application
extension UIViewController {
func showHUD(progressLabel:String){
DispatchQueue.main.async{
let progressHUD = MBProgressHUD.showAdded(to: self.view, animated: true)
progressHUD.label.text = progressLabel
}
}
func dismissHUD(isAnimated:Bool) {
DispatchQueue.main.async{
MBProgressHUD.hide(for: self.view, animated: isAnimated)
}
}
}
USAGE:
1. SHOW - self.showHUD(progressLabel: "Loading...")
2. HIDE - self.dismissHUD(isAnimated: true)
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
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)
}
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)