【问题标题】:iOS: Subclassing UIWebView URLRequest crashiOS:子类化 UIWebView URLRequest 崩溃
【发布时间】:2017-05-22 20:25:44
【问题描述】:

我正在继承 UIWebView,但是当我尝试发出请求时,它会因以下错误而崩溃:

fatal error: unexpectedly found nil while unwrapping an Optional value

这是我的实现:

视图控制器:

var web:MyWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
self.webPage = MyWebView(frame: self.view.frame)
        self.view.bringSubview(toFront: self.webPage!)
}

class MyWebView: UIWebView,UIWebViewDelegate {


let urlStr = "http://apple.com"

override init(frame: CGRect) {
    super.init(frame: frame)
    scalesPageToFit = true
    scrollView.bounces = false
    delegate = self
    let urlRequest = URL(string: urlStr)
    let request = URLRequest(url: urlRequest!)
    self.loadRequest(request)

}

如果在控制台检查urlRequest的值:

po urlRequest
nil

你们中的任何人都知道我做错了什么或者为什么这个 urlRequest 被设置为 nil 吗?

非常感谢您的帮助。

【问题讨论】:

  • 你如何初始化MyWebView,它只是一个 IBOutlet 吗?如果没有将代码粘贴到您初始化它的位置。你的打印报表在哪里?你如何打印 nil ?
  • 它是否说明您在哪一行得到了致命错误?

标签: ios swift3 uiwebview xcode8


【解决方案1】:

这对我来说很好

import UIKit

    class MyWebView: UIWebView,UIWebViewDelegate  {


        let urlStr = "https://www.apple.com"

        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
        }

        override init(frame: CGRect) {
            super.init(frame: frame)
            scalesPageToFit = true
            scrollView.bounces = false
            delegate = self
            let urlRequest = URL(string: urlStr)
            let request = URLRequest(url: urlRequest!)
            self.loadRequest(request)
        }

    }

然后从视图控制器调用它

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    override func viewDidAppear(_ animated: Bool) {

        let webView = MyWebView.init(frame: self.view.frame)
        self.view.addSubview(webView)

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 2014-06-16
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    相关资源
    最近更新 更多