使用 3D Touch 查看 UIButton 时 UIWebView 不显示内容

UIWebView not showing content when peeking on a UIButton using 3D Touch

我希望实现 link 网站的效果,并且可以使用 3D Touch 进​​行预览,例如在 Apple 的 Notes 应用中。

在我的情节提要中,我的一个 UIViewController 中有一个 UIButton(打开 link),我有另一个自定义类型 WebViewController(情节提要 ID:WebView)的 UIViewController,仅包含一个 UIWebView。我已经在 UIButton 上实现了 3D Touch,我可以在速览视图中显示我想要的任何内容,但是当我在速览视图中显示它时,我的 UIWebView 没有显示它的内容。我已经使用 UIWebViewDelegate 函数来确认 UIWebView 正在成功加载 url。唯一的问题是它在 UIWebView 中没有显示任何内容,当我在 UIButton 上使用 3D touch 时,我只得到一个空白的 UIWebView。

这是我的 UIViewController 中 3D Touch peek 实现的代码:

func previewingContext(_: UIViewControllerPreviewing, viewControllerForLocation: CGPoint) -> UIViewController? {
    let storyboard = UIStoryboard(name: "Main", bundle: nil)
    let previewController = storyboard.instantiateViewController(withIdentifier: "WebView") as? WebViewController
    previewController?.loadView()
    previewController?.webView.loadRequest(URLRequest(url: URL(string: "https://google.com/")!))
    return previewController
}

我使用了以下 UIWebViewDelegate 方法来检查 UIWebView 是否正在加载 url:

func webViewDidStartLoad(_ webView: UIWebView) {
    print("Started loading")
}

func webViewDidFinishLoad(_ webView: UIWebView) {
    print("Finished loading")
}

func webView(_ webView: UIWebView, didFailLoadWithError error: Error) {
    print("WebView error: \(error)")
}

那些给我以下输出,所以我假设 url 加载正常:

Started loading
Finished loading

如何让 UIWebView 在速览视图中显示加载的 url?

我通过联系 KrakenDev 的 Hector(所有功劳都归功于他)解决了问题,他建议我将 UIWebView 的加载代码移至 WebViewController 的 viewWillAppear()。现在一切正常。