ios - 初始加载后是否可以将新网址重新加载到 WKWebView 中?

标签 ios swift ios13

我在一个简单的 ios 13 应用程序中使用 WKWebView。我希望能够根据用户与我的应用程序的交互打开另一个网址。

这是我的 ViewController 中的代码

    var url:String = "https://example.com";

    override func viewDidLoad() {
        let notificationName = Notification.Name("updateWebView")
        updateWebView()
    }

    @objc func updateWebView() {
        guard let url = URL(string: url) else {
            print("Invalid URL")
            return
        }
        let request = URLRequest(url: url)
        newWebView.load(request)
    }

我已经在 sceneDelegate 代码中设置了更新 View Controller 中的 url,看起来像这样:

let yourViewController = self.window?.rootViewController as? ViewController
        yourViewController?.passData(newUrl) 

我可以看到调试器在 viewController 类中更新了 url 字符串。但是当它运行以下代码块时:

    func passData(_ data : String?) {
        self.data = data
        guard let url = URL(string: url) else {
            print("Invalid URL")
            return
        }
        let request = URLRequest(url: url)
        newWebView.load(request)

    }

控制台记录以下消息:

2019-10-15 20:33:28.886512+0100 SamplerApp[59216:7409192] [ProcessSuspension] 0x600000c936c0 - WKProcessAssertionBackgroundTaskManager: Ignored request to start a new background task because the application is already in the background

我希望这会在我的应用程序中的 WKWebView 中加载新网址,但代码似乎没有执行任何操作,只是记录消息

最佳答案

您所要做的就是执行WKWebView.evaluateJavaScript()

webView.evaluateJavaScript("window.location = 'https://www.google.com';", completionHandler: nil)

它的作用是通过 JavaScript 而不是 Swift。它“欺骗”Swift 认为该网页想要访问不同的 URL。

请务必将 webView 替换为您自己的 WKWebViewhttps://www.google.com对于您想要将用户重定向到的任何网站。

关于ios - 初始加载后是否可以将新网址重新加载到 WKWebView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58401763/

相关文章:

ios - 一类 UIView 也可以是 UITextFieldDelegate 吗?

ios - Xcode 11 tableview 在启动时崩溃

swift - 为什么 iOS13 更改 NSAttributedString 中段落的字体系列 <p>

iOS 13 语音控制辅助功能 - 有没有办法执行更多自定义操作(而不仅仅是链接到辅助功能标签)?

ios - 扩展和收缩 View 中相邻的 UI 对象

ios - 使用 Xcode 8 转换为 Swift 3

swift - url 路径中的 Alamofire 变量或参数支持

ios - block 回调——当原始对象被释放时

ios - 用于测试 iPhone 应用程序的 iPad mini

objective-c - 核心动画动画滞后