在我的项目有很多,其通过锚链接相互连接的HTML文件。所有HTML文件显示在一个选定UITableView
后,通过UIWebView的。一旦加载的锚链接工作,用户可以去选择HTML。现在,当想回去,因为无论我在导航栏中做后退按钮把我们带到了tableView
不是以前的HTML问题就出现了。我如何添加一个后退按钮,我如何知道在该HTML正在通过UIWebView
看到任何给定的时间?
import UIKit
class DisplayViewController: UIViewController, UIWebViewDelegate {
var articleName = “”
@IBOutlet var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
functionOfWebView()
}
func functionOfWebView()
{
let URL = Bundle.main.url(forResource: "\(articleName)", withExtension: "html")
let request = NSURLRequest(url: URL! as URL)
webView.loadRequest(request as URLRequest)
}
在我来说,我做了一个VC的财产isInitialWebPageLoaded
反映web视图是否被从HTML字符串或没有加载 - 这隐含着用户没有自来水链接或别的东西发生了。
为了得到知道什么时候发生的VC需要符合UIWebViewDelegate
协议和实施func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool
这样的:
func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
isInitialWebPageLoaded = navigationType != .linkClicked
return true
}
与每一位返回按钮的动作被调用后,我只需检查:
if webView.canGoBack {
webView.goBack()
} else if isInitialWebPageLoaded == false {
webView.loadHTMLString(yourHTMLString, baseURL: nil)
} else {
navigationController?.popViewController(animated: true)
}
希望它帮助。
您必须在HTML添加一个唯一的ID后来当回去与“GoBack的”动作解析HTML找到ID。