WKNavigationDelegate仅在设置为self时有效

时间:2015-02-25 15:00:15

标签: swift wkwebview

我正在编写一个Swift Hybrid应用程序,我需要能够知道我的WKWebView何时完成了加载请求。我试图使用WKNavigationDelegate来实现这一目标。但是,我可以用这种方式设置事件的唯一方法就是:

webView.navigationDelegate = self

问题是我有一些我希望与我的请求相关联的数据,所以我创建了一个实现WKNavigationDelegate的自定义类,如下所示:

class MyNavigationDelegate : NSObject, WKNavigationDelegate {
    init(...) {
        //set local variables with passed args
    }

    func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {        
        println("finished loading")
    }
}

然后我这样分配:

webView.navigationDelegate = MyNavigationDelegate(my, arguments, here)
webView.loadRequest(...)

页面正在加载,所以我加载它的方式没有问题。我错过了什么?

1 个答案:

答案 0 :(得分:9)

委托是一个弱属性,因此请确保您在别处持有委托类实例 - 它甚至可能在被使用之前被释放。与此同时,自我没有被解除分配,所以它正在发挥作用。