【发布时间】:2021-01-12 15:33:33
【问题描述】:
我目前正在尝试使用 Swift 在 Xcode 的导航页面中实现一个简单的WKWebView,但是,一旦我切换到专用页面,应用程序就会崩溃并引发以下异常:
2021-01-12 16:24:40.981110+0100 SmartMirror[2078:1089320] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[WKWebView 视图]:无法识别的选择器发送到实例 0x11380c400”
我还使用了一个活动指示器,它应该在页面加载之前显示。这是我的代码:ThirdViewController.swift
import UIKit
import WebKit
class ThirdViewController: UIViewController, WKUIDelegate {
@IBOutlet var webView: WKWebView!
@IBOutlet var activityIndicator: UIActivityIndicatorView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let url = URL(string: "http://192.168.178.34:8080/")
let request = URLRequest(url: url!)
webView.load(request)
webView.addObserver(self, forKeyPath: #keyPath(WKWebView.isLoading), options: .new, context: nil)
}
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "loading" {
if webView.isLoading {
activityIndicator.startAnimating()
activityIndicator.isHidden = false
}else {
activityIndicator.stopAnimating()
activityIndicator.isHidden = true
}
}
}
}
这是我的故事板,每个页面都有自己的视图:
https://i.stack.imgur.com/nFFlH.jpg
我们将不胜感激!
真诚地, 卢卡斯
【问题讨论】:
-
我测试了你的代码,我在
else语句中的activityIndicator上有一个nil值。但你写的是不同的错误。如果我评论这些行,它可以与另一个url一起正常工作。 -
我用“google.com”尝试了同样的事情,我得到了和以前一样的错误。我觉得它与我的 ViewController 有关,但我不能说。你只用了一页吗?
-
我在
TabController中测试了两个ViewControllers。在第二个中,我添加了webView。尝试不使用loadView()函数,它应该也可以工作。 -
感谢您提议的编辑顺便说一句。!我也试过了,但是还是不行。如果我摆脱 webView 和 activityIndicator,它只会加载第三页。
-
就是这样,即使我注释掉所有内容并只将 WebView 和 ActivityIndicator 留在情节提要中,只要我切换到第三页,应用程序就会崩溃。