Swiftを使用してiOS 13上のWKWebViewでWebページをロードしようとしています。 iOS 12では問題なく動作します。問題は、WKWebViewがiOS 13で白い画面を表示することです。両方(iOS 12/iOS 13)で同じURLを使用しているため、URLに問題がないことを100%確信しています。ここに私がウェブページをロードする私の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
}
}
サファリインスペクターの結果:
about:blank
www.google.com
リクエストを行う前に常に有効なURLを確保する方法の1つは、強制アンラップの代わりに「if」を使用することです。
override func viewDidLoad() {
super.viewDidLoad()
if let url = URL(string: MyData.url){
webView.load(URLRequest(url: url))
}
}
また、elseステートメントをそこに追加したり、内部に入っていない場合は早期復帰を使用して出力したりできます。
これを行ってURLが有効かどうかを確認する以外に、デバッグしてWebビューをチェックし、それがnil
かどうかを確認できます。この場合、解決策は、viewWillAppear
ではなくviewDidLoad
にコードを追加することです。
私はシミュレータのiOS 12.2バージョンでも試してみましたが、同じ問題が発生するので、問題は自分のデバイスのシミュレータにあり、実際のデバイスでは問題なく動作します