当我试图在内部加载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
方法中直接调用UIWebView
的load
方法,而是可以在PDFDisplayVC
中有一个名为mathBookURL
(类似于var mathBookURL: URL?
(的变量,在PDFDisplayVC
的viewDidLoad
中可以调用webView.load(mathBookURL!)
。在这种情况下,您必须在prepareForSegue
方法中将正确的url分配给mathBookURL
变量。
希望这能有所帮助!
您需要在viewDidLoad
期间或之后调用webView.load(mathBookURL)
。