3

(斯威夫特,iOS8上,Xcode6,iPhone/iPad的)webViewDidFinishLoad沒有發射稱爲工作

webViewDidFinishLoad不會被調用,不點火,不工作。

是的,我已經設置了包含視圖控制器作爲委託。我在UIWebView上按住CTRL鍵,拖動到代表視圖控制器的小黃圈,然後釋放。右鍵單擊UIWebView對象會顯示該委託已設置。

是的,我確實在我的類聲明實現UIWebViewDelegate,就像這樣:

class Paragraph: UIViewController, UIWebViewDelegate { 

是的,我沒有重新啓動的Xcode和測試的模擬器和真正的iPhone 4S兩者。

請求如下:

@IBOutlet var paragraph : UIWebView = nil 

var r = NSBundle.mainBundle().pathForResource("cheddar", ofType: "htm") 
var u = NSURL(fileURLWithPath: r) 
paragraph.loadRequest(NSURLRequest(URL: u)) 

回調函數如下:

func webViewDidFinishLoad() { 
    println("webViewDidFinishLoad") 
} 
+0

'方法不會覆蓋它的父類中的任何方法' – kmiklas

+2

愚蠢的問題,但是在'paragraph.loadRequest(...)'調用之前有'paragraph.delegate = self'嗎? – Jiaaro

+0

我把它放在那裏(雖然我不明白爲什麼它需要,如果我將UIWebView委託連接到故事板中的包含視圖控制器),但「webViewDidFinishLoad」仍未被調用。 – kmiklas

回答

4

我知道了。回調失蹤了一個參數。對於後人:

func webViewDidFinishLoad(webView: UIWebView!) { 

注意webView: UIWebView!參數

在這種情況下,也許更重要的,是我發現的bug的方式。我創建了一個全新的視圖控制器,並將它拼湊在一起,仔細檢查每一步以確保我沒有遺漏任何東西。

當Intellisense彈出窗口顯示帶參數的功能時,我看到了我的錯誤。

注意:在Swift 2.2中,UIWebViewDelegate協議指定了不同的選項: webView: UIWebViewwebView: UIWebView!產生警告。