首页 > 解决方案 > Web 视图崩溃

问题描述

您好,感谢您阅读本文,
我正在构建一个带有 2-3 个选项卡(视图控制器)的简单应用程序,第一个是某种转换器(英里到公里),很好,第二个视图控制器必须有一个“网络视图”元素。因此,当我构建一个只有一个视图控制器的单独应用程序时,(使用“import WebKit”)它可以正常工作:

super.viewDidLoad()
    webview.load(URLRequest(url: URL(string: "https://www.google.com")!))

但是,当我将其复制到 @super.viewDidLoad()@ 行下的 2 选项卡式应用程序代码时,它会崩溃说“线程 1:致命错误:在隐式展开可选值时意外发现 nil”。

我对这一切都很陌生,所以我不知道如何解决这个问题。而且我在这个论坛上没有找到类似问题的解决方案。先感谢您!

ps 我如何创建 web 视图 - 直观地添加它。我看到了通过编码创建它的提示,我会尝试,谢谢

pps 我在这里添加我的代码:

import UIKit
import SafariServices
import WebKit


extension String {
func toDouble() -> Double? {
return NumberFormatter().number(from: self)?.doubleValue
} }

class ViewController: UIViewController {
    @IBOutlet var mileField: UITextField!
    @IBOutlet var mileResult: UILabel!
    @IBOutlet var meters: UILabel!
    @IBOutlet var cmeters: UILabel!

@IBAction func mileButton(_ sender: UIButton) {
    let mile: Double = mileField.text?.toDouble() ?? 0
    let km = mile * 1.6
    let m = km * 1000
    let cm = m * 100
    meters.text = String(m)+" m"
    mileResult.text = String(km)+" km"
    cmeters.text = String(cm)+" cm"
}
@IBOutlet var vw: WKWebView!
override func viewDidLoad() {
 super.viewDidLoad()
    vw.load(URLRequest(url: URL(string: "google.com")!)) // this is where I got Fatal error blah blah blah
  }
    @IBAction func bTapped() {
        let vc = SFSafariViewController(url: URL(string: "https://www.apple.com")!)
        present(vc, animated: true) // this works fine but I need to use webview element
    }
} 

一个小截图

标签: iosswiftxcode

解决方案


声明你的两个视图控制器。另外请在情节提要中将此类名称分配给您的视图控制器。

https://i.stack.imgur.com/BDoY6.png


class ViewController1: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
}


class ViewController2: UIViewController {
    
    @IBOutlet var webview: WKWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        webview.load(URLRequest(url: URL(string: "https://www.google.com")!))
    }
}


推荐阅读