WKWebView 未在 iOS 13 上加载网页

elh*_*oub 5 ios swift wkwebview ios13

我正在尝试使用 Swift 在 iOS 13 上加载带有 WKWebView 的网页。它在 iOS 12 中运行良好。问题是 WKWebView 在 iOS 13 上显示白屏。两者(iOS 12/iOS 13)使用相同的 URL,所以我 100% 确定 URL 中没有问题。这是我加载网页的 UIViewController:

import UIKit
import WebKit

class WebViewController: UIViewController , WKNavigationDelegate{

  var param : String!
  var webView: WKWebView!

  override func viewDidLoad() {
      super.viewDidLoad()

      let url = URL(string: "https://google.com")!
      webView.load(URLRequest(url: url))
  }

  override func loadView() {
      webView = WKWebView()
      webView.navigationDelegate = self
      view = webView
  }
}
Run Code Online (Sandbox Code Playgroud)

野生动物园检查员结果:

  • 对于 iOS 13 模拟器是 about:blank
  • 对于真实设备 iOS 12.4 是 www.google.com

S.M*_*ell 1

确保在发出请求之前始终拥有有效 URL 的一种方法是使用“if”而不是强制解包。

override func viewDidLoad() {
      super.viewDidLoad()

      if let url = URL(string: MyData.url){
         webView.load(URLRequest(url: url))
      }
}
Run Code Online (Sandbox Code Playgroud)

您还可以在其中添加 else 语句,或者如果您不进去的话,可以使用提前返回来打印一些内容。

除了执行此操作来检查 url 是否有效之外,您还可以调试并检查 webview 以查看是否有效nil。如果是这种情况,那么您的解决方案是将代码添加到viewWillAppear而不是viewDidLoad.