gpt4 book ai didi

swift - 为什么 WKWebView 变成了 nil?

转载 作者:搜寻专家 更新时间:2023-10-31 22:18:41 24 4
gpt4 key购买 nike

我用的是Swift4.0和Xcode9.0。我尝试使用 WKWebView 显示一个网站。昨天还没有问题,今天就出错了。

import UIKit
import WebKit

class WKWebViewViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {

@IBOutlet weak var webView: WKWebView!

var startUrl = "https://www.apple.com"
var requestUrl: String?

override func loadView() {
webView.uiDelegate = self
webView.navigationDelegate = self

}

override func viewDidLoad() {
super.viewDidLoad()

webView.allowsBackForwardNavigationGestures = true

if let url = URL(string: startUrl) {
let request = URLRequest(url: url)
webView.load(request)

}

}

}

错误发生在webView.uiDelegate = self。这是错误日志:

fatal error: unexpectedly found nil while unwrapping an Optional value

为了调试,我在loadView()下添加了print("webView:\(webView)"),发现webView本身是nil.

我尝试将 ? 添加到所有 webView,但应用程序只出现黑屏。为什么 WkWebView 变成了 nil?是我的代码之外的一些必需设置吗?

最佳答案

当您以这种方式覆盖 loadView 时,您必须调用 super.loadView()。这就是 WKWebView 为零的原因。

文档建议在使用 Storyboard/xib 时根本不要覆盖 loadView

If you use Interface Builder to create your views and initialize the view controller, you must not override this method.

您应该将这两行代码作为 viewDidLoad 中的第二件事移动

override func viewDidLoad() {
super.viewDidLoad()
webView.uiDelegate = self
webView.navigationDelegate = self
....
}

关于swift - 为什么 WKWebView 变成了 nil?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47033754/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com