设备中的WKWebView加载请求不起作用,但是模拟器正在起作用

时间:2018-12-24 03:12:35

标签: ios swift webview wkwebview

我对WKWebview有疑问。
首先,我有一个UITabbarViewController(tab1,tab2)和两个ViewController。
在ViewController1中,有两个按钮(button1,button2),其操作是单击标签栏tab2以显示ViewController2并带来不同的URL字符串。
在ViewController2中有一个WKWebView,并加载url字符串的请求。
我在模拟器中工作正常,但是在设备中构建并在第一次工作时工作良好,然后我点击了标签栏tab1并返回到ViewController1。
我单击button2并显示ViewController2。
而且我还设置了断点,WKWebview已经运行了加载请求功能。
但是WKWebview还会向我显示button1网址内容,而不是button2网址内容。当我返回并再次单击button2时,它就可以了。为什么WKWebView第一次不刷新?
谢谢。
Xcode 9.4.1,设备iOS 12.0.1(16A404)

string


class ViewController1: UIViewController {

@objc func btnTapped(sender: UIButton) {

    if let vc = self.navigationController?.parent as? ViewController {
        if let number = item?.number {

            let domainPath = “\(customURL!.absoluteString)"
            let extPath = "detail/\(number)/&topPageBack=list"
            let encodestr = extPath.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)
            let finalPath = domainPath.appending("/").appending(encodestr!)

            if let url = URL(string: finalPath) {
                vc.loadSpecificURL = url
            }
            vc.tabBarView.buttonClick(tag: 1)
        }
    }
}
}


class ViewController2: UIViewController {

lazy var webViewController: CustomWKWebViewController = {
    let controller = CustomWKWebViewController()
    controller.wKWebViewPage = .searchPage
    return controller
}()

var loadURL: URL?

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    if let url = loadURL {
        webViewController.reloadWebView(url: url)
        loadURL = nil
    }

}

}

1 个答案:

答案 0 :(得分:0)

首先,您检查网址是否为nil,然后再调用if的else部分。

if let url = webview.url {
    webview.reload()
} else {
    webview.load(URLRequest(url: originalURL))
}