webViewDidFinishLoad没有触发叫做工作

时间:2014-07-10 16:18:48

标签: xcode uiwebview swift uiwebviewdelegate webviewdidfinishload

(Swift,iOS8,Xcode6,iPhone / iPad)

webViewDidFinishLoad没有被调用,没有被激活,也没有被激活。

是的,我已将包含视图控制器设置为委托。我在UIWebView上进行了CTRL-mousedowned,将其拖动到代表视图控制器的小黄圈,然后释放。右键单击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")
}

1 个答案:

答案 0 :(得分:4)

我明白了。回调缺少一个参数。后人:

func webViewDidFinishLoad(webView: UIWebView!) {

请注意webView: UIWebView!参数

在这种情况下,或许更重要的是,我发现错误的方式。我创建了一个全新的视图控制器,并将它拼凑在一起,仔细检查每一步,以确保我没有错过任何东西。

当Intellisense弹出窗口显示带参数的函数时,我看到了我的错误。

注意:在Swift 2.2中,UIWebViewDelegate协议指定了不同的可选性: webView: UIWebViewwebView: UIWebView!会产生警告。