简单的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
绑定到WKWebView
types的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
。