致命错误:加载webView时,在展开可选值时意外发现nil



当我试图在内部加载webView时,我的swift程序崩溃了准备segue我不知道为什么webView=nil

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
var booksController = segue.destination as! PDFDisplayVC
if navigationItem.title == "Math" {
let mathBookURL = URLRequest(url: booksController.mathBook!)
booksController.webView.load(mathBookURL) // <- Crash

}
}

这是PDFDisplayVC 中的代码

import UIKit
import WebKit
class PDFDisplayVC : UIViewController {
//OUTLET
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
}
/*--------URL REQUEST--------*/
let mathBook = URL(string: "https://drive....")

如果比Andrei的答案更详细地解释,在booksController.webView.load(mathBookURL)中,您的webView还没有初始化,这就是为什么它是nil

Andrei的建议是,不要在prepareForSegue方法中直接调用UIWebViewload方法,而是可以在PDFDisplayVC中有一个名为mathBookURL(类似于var mathBookURL: URL?(的变量,在PDFDisplayVCviewDidLoad中可以调用webView.load(mathBookURL!)。在这种情况下,您必须在prepareForSegue方法中将正确的url分配给mathBookURL变量。

希望这能有所帮助!

您需要在viewDidLoad期间或之后调用webView.load(mathBookURL)

最新更新