【问题标题】:Xcode Wkwebview not LoadingXcode Wkwebview 未加载
【发布时间】:2019-12-31 17:47:22
【问题描述】:

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

这也是一个视频,你可以看到错误:

https://youtu.be/qU3Mu1G7MY0

Viewhome:

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()

        }

    }

}

查看购物 |购物车类:

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()
    }

}

【问题讨论】:

  • 这需要代码
  • 获取像 Visual Studios Code 这样的文本编辑器,将代码转储到其中,突出显示所有内容,然后使用 command + ] 将其全部缩进。
  • 作为建议,如果您要发布问题,如果您发布格式正确的代码,您将获得更多关注。如果要读的是 PITA,那就是要回答的 PITA。
  • 好的,谢谢,新年快乐

标签: swift xcode webview


【解决方案1】:

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

如果数据存储在服务器上,您只需在 VC 中的 viewDidAppear() 覆盖函数中重新加载网页即可。这真的取决于你的目标,但这些是一些可行的建议。

【讨论】:

  • 非常感谢先生,我是 xcode 的新手,所以我希望我能够创建您所说的内容,但其他人说我应该做以下事情:将 WKNavigationDelegate 添加到您的类定义中并实现代表。你认为这也可行吗?
  • @user12566208 我不认为实现代理会解决两个 Web 视图之间共享数据的问题。但是,如果您需要更多帮助来完成这项工作,请告诉我。
猜你喜欢
  • 2019-12-27
  • 1970-01-01
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多