我对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
}
}
}
答案 0 :(得分:0)
首先,您检查网址是否为nil,然后再调用if的else部分。
if let url = webview.url {
webview.reload()
} else {
webview.load(URLRequest(url: originalURL))
}