我实例化一个WebViewController以模态方式呈现它(其中包含webView的UIViewController)并尝试将当前类设置为其webView的委托,但它会导致应用程序崩溃。
let webVC = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "WebViewController") as! WebViewController
UIApplication.topViewController()?.present(webVC, animated: true, completion: {
webVC.webView.load(data, mimeType: response.mimeType!, textEncodingName: response.textEncodingName!, baseURL: response.url!)
webVC.webView.delegate = self
})
我试图删除“vc.webView.delegate = self”部分,并且页面加载就好了。有什么想法会导致问题吗?
答案 0 :(得分:1)
崩溃说,当UIWebView
尝试向代表发送消息时,代理人不再存在。这是objc_msgSend
的正常原因。 (或者你称之为一种不存在的方法......但对于可选方法来说这是不可能的。)
确保在self
超出范围之前删除委托,或者如果需要它来处理重定向,请保留委托对象。
答案 1 :(得分:0)
在addSubView之后,保留了webVC的视图并发布了webVC(因为它是局部变量) 您应该将webVC声明为全局变量,这样就不会释放webVC