swift - 仅当 loadRequest 位于 viewDidLoad 之外时,UIWebView 才会出现 Nil 错误

标签 swift uiwebview

我收到以下错误

"Unexpectedly found nil while unwrapping an Optional value"

当我尝试在通过容器 View 呈现的 Web View 中加载 PDF 文件时。

我在 IB 中正确链接了 UIWebView,并在父 VC 上运行以下代码,告诉容器 View 与 WebView 加载 PDF 文件。

func loadThePDF () {
 if let pdf = Bundle.main.url(forResource: "Clothing", withExtension: "pdf", subdirectory: nil, localization: nil)  {
            let req = NSURLRequest(url: pdf)
            catalogWebView.loadRequest(req as URLRequest)
 }
}

这里奇怪的是,如果我将 PDF 加载代码放入 ViewDidLoad 中,它就可以正常工作。

但是,尝试告诉它在该范围之外加载 PDF 会导致此错误,只能通过放置 ? 来解决此错误。在catalogWebView上?但随后 PDF 就无法加载...

最佳答案

我通过更改链接到子/容器 View Controller 的方式解决了这个问题。由于某种原因,这已经通过使用以下方法解决了问题:

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "pdfView" {
            pdfVC = segue.destination as? PDFViewController
        }
    }

不完全确定原因,但我猜测这与当我告诉 ViewController 在容器 View 的 Web View 中加载新的 PDF 时 ViewController 的链接方式有关。

关于swift - 仅当 loadRequest 位于 viewDidLoad 之外时,UIWebView 才会出现 Nil 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55840608/

相关文章:

iphone - 为什么 UIWebView 不断检测电话号码?

swift - 如何在使用 swift(SpriteKit) 构建的 tvOS 应用程序中的 UIWebview 上加载 css?

javascript - 如何在 UIWebView 中将数据从 Xcode 传递到 javascript?

objective-c - 将 JavaScript 注入(inject) UIWebView

uiwebview - 如何修复 iOS9 UIWebview 中的 window.location 问题

ios - 声音文件在模拟器中工作正常,但在 iPhone 中不起作用

ios - SQLite3 在 iOS 应用程序中生成 no such table 错误

swift - 在 Swift 4 中,将 String 值类型转换为 Float 值的正确方法是什么?

xcode - Swift 编译器 - 代码生成

ios - Xcode Storyboard : Internal error. 请提交错误