wake-up-neo.com

So verwenden Sie MBProgressHUD mit swift

hier ist mein Code, aber es zeigt den Fortschritt. Gibt es einen Fehler in diesem Code? Bitte geben Sie eine Idee, um das Problem zu beheben, oder geben Sie einen Link zu diesem Thema an.

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

}
39
vimal prakash

Aktualisierte Antwort:

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

So entlassen Sie den ProgressHUD:

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

Sie können diesen Ansatz auch versuchen, wodurch die andere Aktivität im Hintergrund ausgeführt wird, sodass die Benutzeroberfläche reaktionsfähig bleibt und den Benutzern eine bessere Benutzererfahrung bietet. Dies ist der beabsichtigte/empfohlene Ansatz für die Verwendung des 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...
    }
}
13
The Crazy Chimp

Swift 3 Erweiterungen

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
9

Ich habe eine Erweiterung über UIViewController hinzugefügt, um es einfacher zu machen. 

Swift 4.1

import UIKit
import MBProgressHUD

extension UIViewController { 

    func showHUD(progressLabel:String){
        let progressHUD = MBProgressHUD.showAdded(to: self.view, animated: true)
        progressHUD.label.text = progressLabel
    }

   func dismissHUD(isAnimated:Bool) {
        MBProgressHUD.hide(for: self.view, animated: isAnimated)
    }
}

Verwendungszweck:

 //Add hud for showing progress
 self.showHUD(progressLabel: "Sending...")

 //Hide Hud
  DispatchQueue.main.async {
     self.dismissHUD(isAnimated: true)
  }

Ich hoffe es hilft!!!

5
Harjot Singh

Gehen Sie den folgenden Code durch

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

Wenn Sie das HUD abweisen möchten

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

Zu @ EricDXSs Antwort hinzugefügt

Die Swift 3 Version ist da

Zeigen:

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

Ablehnen:

loadingNotification.hide(animated: true)
2
Janmenjaya

Versuchen Sie es mit 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)
}

Wenn Swift-Compiler-Warnung: hideAllHUDs is deprecated. We should store references when using more than one HUD per view

Benutzen:

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

Verwenden Sie den folgenden Code, um MBProgressHUD zu rendern, und schließen Sie es nach Abschluss einiger Aktionen wie beschrieben aus. 

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


    }

Weitere Informationen finden Sie in diesem Tutorial: http://sourcefreeze.com/mbprogresshud-example-Swift/

2

Ich habe es so gelöst:

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
    }
}
1
vimal prakash

schritt 1: Laden Sie die Dateien "MBProgressHUD.h" und "MBProgressHUD.m" herunter und fügen Sie beide Dateien in Ihr Projekt ein. Sie werden aufgefordert, Bridging für Objective C-Dateien zu verwenden. Wenn Sie bereits überbrückt haben, werden Sie nicht gefragt.

schritt 2: Importieren Sie in Bridging File MBProgressHUD "Import MBProgressHUD.h"

schritt 3: Verwenden Sie den folgenden Code, um den Fortschritt anzuzeigen oder zu verbergen.

zur Show

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

für verstecken

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