2017-02-08 26 views
0

我試圖表現出對UIWebViewMBProgressHUD。我想在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在web視圖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(動畫:真)給出了一個錯誤,說的參數缺少參數「爲」 – Dia

+0

感謝..但它仍然它是否適合你不工作:( – Dia

+0

檢查現在... – User511