Xcode Wkwebview 未加载

Xcode Wkwebview not Loading

我有一个带有 WebviewTabBar 的 Xcode 项目,通过 TabBar,我可以在 WebView 之间切换。 我的问题是,当我在 lieferworld.de 下的 ShoppingCard 中放入一些东西并使用 TabBar 切换到我的购物卡 url 时,其中的项目不可见。我该如何解决这个问题? ShoppingCard URL 以 .php 结尾。下面是实现的代码

这里还有一个视频,您可以看到错误:

https://youtu.be/qU3Mu1G7MY0

查看主页:

import UIKit
import WebKit

class viewHome: UIViewController, WKUIDelegate {



    @IBOutlet var webViewHome: WKWebView!


     override func loadView() {
           let webConfiguration = WKWebViewConfiguration()
           webViewHome = WKWebView(frame: .zero, configuration: webConfiguration)
           webViewHome.uiDelegate = self
           webViewHome.configuration.preferences.javaScriptEnabled = true
           //webViewHome.configuration.preferences.javaEnabled = true

           view = webViewHome

    }

    override func viewDidLoad() {
        super.viewDidLoad()

        let url = URL(string: "https://lieferworld.de")
        let request = URLRequest(url: url!)
        webViewHome.configuration.preferences.javaScriptEnabled = true
        //webViewHome.configuration.preferences.javaEnabled = true
        webViewHome.load(request)
    }




    @IBAction func GoBackHome(_ sender: Any) {


        if webViewHome.canGoBack {

            webViewHome.goBack()

        }

    }



    @IBAction func GoForwardHome(_ sender: Any) {

        if webViewHome.canGoForward {

            webViewHome.goForward()

        }

    }

}

查看购物 |购物车Class:

import UIKit
import WebKit

class viewShopping: UIViewController, WKUIDelegate {




    @IBOutlet var webViewShopping: WKWebView!

    override func loadView() {
           let webConfiguration = WKWebViewConfiguration()
           webViewShopping = WKWebView(frame: .zero, configuration: webConfiguration)
           webViewShopping.uiDelegate = self
           //webViewShopping.configuration.preferences.javaEnabled = true
           webViewShopping.configuration.preferences.javaScriptEnabled = true

           view = webViewShopping
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        let url = URL(string: "https://lieferworld.de/warenkorb.php")
        let request = URLRequest(url: url!)
        webViewShopping.configuration.preferences.javaScriptEnabled = true
        //webViewShopping.configuration.preferences.javaEnabled = true

        webViewShopping.load(request)
    }

    @IBAction func goBackShoppingCart(_ sender: Any) {

        if webViewShopping.canGoBack {

            webViewShopping.goBack()

        }

    }


    @IBAction func goForwardShoppingCart(_ sender: Any) {

    if webViewShopping.canGoForward {

            webViewShopping.goForward()

        }

    }


    @IBAction func webViewRefresh(_ sender: Any) {

        webViewShopping.reload()
    }

}

您的数据未在两个 UIViewController 之间共享,因为您的 WKWebView 是彼此的不同实例并且不共享相同的数据。就好像您在 Web 浏览器中打开了两个不同的选项卡一样。如果您已登录,并且购物车数据存储在服务器上,那么如果您刷新购物车页面,它应该可以工作。如果它是基于 cookie 的,则需要确保这些 cookie 在两个 web 视图中是通用的。相反,使用选项卡重定向到购物车页面而不是创建新的 View Controller 实例,或者将 WKWebView 的实例放入可在两个选项卡之间共享的静态变量中。您必须对该视图做一些 hiding/showing 操作,这样您就不会看到它正在加载,但这可以通过委托来处理。

如果数据存储在服务器上,您只需在 VC 中的 viewDidAppear() 重写函数中重新加载网页即可。这实际上取决于您的目的,但这些是一些有用的建议。