2017-02-08 4 views
0

MBProgressHUDUIWebViewに表示しようとしています。私はwebviewでiframeを読み込もうとしています。私のスピナーは、WebViewの読み込みが開始されたときに表示されますが、webView didFinishLoad()のブレークポイントに移動しても非表示にはなりません。ここでMBProgressHUD非表示 - スウィフト3

は私のコードです:

class LiveViewController: UIViewController, UIWebViewDelegate { 

@IBOutlet weak var liveWebView: UIWebView! 

var spinnerActivity: MBProgressHUD! = nil 

override func viewDidLoad() { 
    super.viewDidLoad() 

    liveWebView.delegate = self 

    let embededHTML = "<html><body><iframe src=\"\" width=\"100%\" height=\"500\" frameborder=\"0\" scrolling=\"no\"></iframe></body></html>" //link removed 
    liveWebView.loadHTMLString(embededHTML, baseURL: nil) 
} 

public func webViewDidStartLoad(_ webView: UIWebView){ 
    spinnerActivity = MBProgressHUD.showAdded(to: self.view, animated: true) 
    spinnerActivity.label.text = "Loading" 
    spinnerActivity.detailsLabel.text = "Please Wait!" 
    spinnerActivity.isUserInteractionEnabled = false 
} 

public func webViewDidFinishLoad(_ webView: UIWebView){ 
    spinnerActivity.hide(animated: true) 
} 

public func webView(_ webView: UIWebView, didFailLoadWithError error: Error){ 
    spinnerActivity.hide(animated: true) 
} 
} 

私はwebViewDidStartLoadとwebViewDidFinishLoadは二回呼び出されていることに気づきました。 私を助けてください。スピナーはちょうど隠れていません..私はXcode8とスウィフト3

編集に使用している:

私はこれを試してみましたが、それはあまりにも動作しません。

class LiveViewController: UIViewController, UIWebViewDelegate { 

@IBOutlet weak var liveWebView: UIWebView! 

var spinnerActivity: MBProgressHUD! = nil 

override func viewDidLoad() { 
    super.viewDidLoad() 

    liveWebView.delegate = self 

    let embededHTML = "<html><body><iframe src=\"\" width=\"100%\" height=\"500\" frameborder=\"0\" scrolling=\"no\"></iframe></body></html>" //link removed 
    liveWebView.loadHTMLString(embededHTML, baseURL: nil) 
} 

    public func webViewDidStartLoad(_ webView: UIWebView){ 
     MBProgressHUD.showAdded(to: self.view, animated: true) 

    } 

    public func webViewDidFinishLoad(_ webView: UIWebView){ 
     MBProgressHUD.hide(for: self.view, animated: true) 

    } 

    public func webView(_ webView: UIWebView, didFailLoadWithError error: Error){ 
     MBProgressHUD.hide(for: self.view, animated: true) 
    } 
} 

This

+0

どこに隠れていますか? – User511

+0

@ User511 in webView didFailLoadWithErrorとwebViewDidFinishLoad – Dia

+0

はい私は私の答えをチェックするのを見ました。私が言及したようにそれを隠す。 – User511

答えて

3

を参照してくださいにコードを次のように置き換えてください:

class LiveViewController: UIViewController, UIWebViewDelegate { 
    var isHudShow = false 
    @IBOutlet weak var liveWebView: UIWebView! 

    var spinnerActivity: MBProgressHUD! = nil 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     liveWebView.delegate = self 
     let embededHTML = "<html><body><iframe src=\"\" width=\"100%\" height=\"500\" frameborder=\"0\" scrolling=\"no\"></iframe></body></html>" //link removed 
     liveWebView.loadHTMLString(embededHTML, baseURL: nil) 
    } 

    public func webViewDidStartLoad(_ webView: UIWebView){ 
    if isHudShow == false 
     { 
     MBProgressHUD.showAdded(to: self.view, animated: true) 
     isHudShow =true 
     } 

    } 

    public func webViewDidFinishLoad(_ webView: UIWebView){ 
    MBProgressHUD.hide(for: self.view, animated: true) 
    } 

    public func webView(_ webView: UIWebView, didFailLoadWithError error: Error){ 
    MBProgressHUD.hide(for: self.view, animated: true) 
    } 
} 
+0

MBProgressHUD.hide(animated:true)パラメータ 'for'のMissing Argumentが ' – Dia

+0

'にありがとうございました。しかし、まだ動作しません:( – Dia

+0

あなたのために動作するかどうかチェックしてください... – User511

関連する問題