简单的Webview:navigationDelegate开始崩溃

我的WebView有一个小问题。 这是我在我的应用程序中所做的:

import UIKit import WebKit class ViewController: UIViewController, WKNavigationDelegate { @IBOutlet var webView: WKWebView! // draged from storyboard override func viewDidLoad() { super.viewDidLoad() var urlToLoad : (String) urlToLoad = "http://wwww.myapp.com" webView.sizeToFit() webView.isUserInteractionEnabled = true let url = URL(string: urlToLoad) let request = URLRequest(url:url!) //webView.navigationDelegate = self webView.load(request) } 

正如你看到的行“webView.navigationDelegate = self”被评论。 如果我取消注释,我的应用程序将在开始时崩溃并告诉我:

debugging器 :libc ++ abi.dylib:以NSExceptiontypes的未捕获exception终止

在这里输入图像说明

任何想法为什么会发生这种情况,以及如何解决这个问题? 我需要这个为了使用像“didFinish导航”的方法,我已经在页面中实现,但他们从来没有被调用。

另外,通过看看我的代码…你看到什么我应该改变我的webview的使用?

感谢你们对我的帮助。

你正在使用UIWebView,并试图调用WKWebView的方法,导致由于在UIWebView上发送无法识别的select器而导致应用程序崩溃。

尝试创build新的项目,并使用下面提到的代码。

将“WebKit”框架导入您的课堂。

 override func viewDidLoad() { super.viewDidLoad() let myWebView:WKWebView = WKWebView(frame: CGRect(x: 0.0, y: 0.0, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)) myWebView.navigationDelegate = self; let url = URL(string: "https://www.Apple.com")! myWebView.load(URLRequest(url: url)) self.view.addSubview(myWebView) } 

然后实现WKNavigationDelegate方法

 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { UIApplication.shared.isNetworkActivityIndicatorVisible = false let url = webView.url print(url as Any) // this will print url address as option field if url?.absoluteString.range(of: ".pdf") != nil { pdfBackButton.isHidden = false print("PDF contain") } else { pdfBackButton.isHidden = true print("No PDF Contain") } } 

希望对你有帮助!

您将UIWebView绑定到WKWebViewtypes的WKWebView 。 因此在尝试调用UIWebView navigationDelegate时会崩溃,因为它不提供此方法。

Storyboard中没有可用的WKWebView的模板版本,因此您必须以编程方式创buildWKWebView

 import UIKit import WebKit class ViewController: UIViewController, WKNavigationDelegate { var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() webView = WKWebView(frame: view.frame) webView.navigationDelegate = self view.addSubview(webView) let url = URL(string: "https://www.google.com")! webView.load(URLRequest(url: url)) webView.allowsBackForwardNavigationGestures = true } 

您不要初始化webView 。 该应用程序崩溃,因为它是nil

您需要将其绑定到故事板或xib文件(取消注释@IBOutlet )或以编程方式对其进行初始化,然后将其添加到viewController's view