在我的项目中有很多html文件,它们通过锚链接相互连接。
所有的html文件都是在UITableView
中由UIWebView选中后显示的。加载后,锚链接起作用,用户可以转到所选的html。
现在问题出现在想要回去的时候,因为无论我做什么,导航栏中的后退按钮都会将我们带到tableView
而不是之前的html。
如何添加后退按钮,我如何知道在任何给定时间通过UIWebView
看到哪些HTML?
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)
}
答案 0 :(得分:2)
您可以通过将webView的“goBack”操作链接到UIButton
来轻松实现此目的。
我假设您在同一个webView中的html文件之间导航。
现在,按钮不应弹出当前的ViewController,而是应该为您的案例执行所需的功能(返回到webview中的上一个网页)。
答案 1 :(得分:1)
在我的情况下,我做了一个VC的属性isInitialWebPageLoaded
,它反映了是否从HTML字符串加载了webView - 这暗示用户确实点击了链接或发生了其他事情。
要知道它何时发生,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)
}
希望它有所帮助。
答案 2 :(得分:0)
你必须在HTML中添加一个唯一的ID,然后再回到" goBack"动作解析html找到ID。