ここに私のコードがありますが、進行状況を示しています。このコードにエラーはありますか?これを修正するためのアイデアを提供するか、これに関連するリンクを提供してください。
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)
}
}
}
更新された回答:
let loadingNotification = MBProgressHUD.showAdded(to: view, animated: true)
loadingNotification.mode = MBProgressHUDMode.indeterminate
loadingNotification.label.text = "Loading"
ProgressHUDを閉じるには:
MBProgressHUD.hideAllHUDs(for: view, animated: true)
また、このアプローチを試して、他のアクティビティをバックグラウンドで実行し続けると、UIの応答性が維持され、ユーザーのエクスペリエンスが向上します。これは、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拡張
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
使いやすく、アプリケーション全体で拡張機能を作成
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)
}
}
}
使用法:
1。SHOW-self.showHUD(progressLabel: "Loading ...")
2。HIDE-self.dismissHUD(isAnimated:true)
以下のコードをご覧ください
class ViewController: UIViewController, MBProgressHUDDelegate {
var hud : MBProgressHUD = MBProgressHUD()
func fetchData() {
hud = MBProgressHUD.showHUDAddedTo(self.view, animated: true)
hud.mode = MBProgressHUDModeIndeterminate
hud.labelText = "Loading"
}
}
HUDを閉じたい場合
MBProgressHUD.hideHUDForView(self.view, animated: true)
@EricDXSの回答に追加、
Swift 3バージョンはこちら
表示する場合:
let loadingNotification = MBProgressHUD.showAdded(to: self.view, animated: true)
loadingNotification.mode = MBProgressHUDMode.indeterminate
loadingNotification.label.text = "Loading"
却下するには:
loadingNotification.hide(animated: true)
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)
}
Swiftコンパイラの警告:hideAllHUDs is deprecated. We should store references when using more than one HUD per view
つかいます:
func hideLoadingHUD(for_view: UIView) {
MBProgressHUD.hide(for: for_view, animated: true)
}
以下のコードを使用してMBProgressHUDをレンダリングし、何らかのアクションが完了したら、説明に従って非表示にします。
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);
}
}
詳細については、このチュートリアルに従ってください: http://sourcefreeze.com/mbprogresshud-example-Swift/
私はこのように解決しました:
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:「MBProgressHUD.h」および「MBProgressHUD.m」ファイルをダウンロードし、両方のファイルをプロジェクトに追加します。 Objective Cファイルのブリッジングを求められます。既にブリッジングを行っている場合、それは尋ねません。
ステップ2:ブリッジングファイルのインポートMBProgressHUD "import MBProgressHUD.h"
ステップ3:以下のコードを使用して、進捗状況を表示または非表示にします。
ショー用
DispatchQueue.main.async {
MBProgressHUD.showAdded(to: self.view, animated: true)
}
隠すため
DispatchQueue.main.async {
MBProgressHUD.hide(for: self.view, animated: true)
}