【问题标题】:go to the previous local html in UIWebView in iOS转到iOS中UIWebView中的上一个本地html
【发布时间】:2019-02-12 03:51:06
【问题描述】:

在我的项目中,有很多 html 文件通过锚链接相互连接。 在UITableView 中选择后,UIWebView 会显示所有 html 文件。一旦加载锚链接工作,用户可以去选择的 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)



}

【问题讨论】:

    标签: html ios swift uiwebview


    【解决方案1】:

    您可以通过将 webView 的“goBack”操作链接到 UIButton 来轻松实现此目的。

    我假设您在同一个 webView 中的 html 文件之间导航。

    • 从情节提要中,选择 webView,然后选择“Connections Inspector”:

    • 请注意,“已接收操作”列表中有“返回”选项;从圆圈拖动到按钮:

    现在,该按钮不应弹出当前的 ViewController,而是应该为您的案例执行所需的功能(返回到 web 视图中的上一个网页)。

    【讨论】:

    • 感谢您的回答,它对我帮助很大,虽然它不会回到以前的 viewController 但我想通了。但是我怎么知道现在显示的是哪个 html,例如更改标题?
    • 很高兴为您提供帮助。好吧,它不应该让你回到以前的 viewController,它代表常规浏览器中的“后退”按钮。可以通过:(webView.request?.URL.absoluteString)!获取webView加载页面的当前URL
    • 如果我的回答解决了您的问题,您应该接受它(复选标记):) 它有助于告诉观众这是本案的正确答案,并为回答者提供 15 分的声誉。跨度>
    【解决方案2】:

    在我的例子中,我做了一个 VC 的属性 isInitialWebPageLoaded,它反映了 webView 是否是从 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)
    }
    

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

      您必须在 HTML 中添加一个唯一的 ID,然后在返回时使用“goBack”操作解析 html 找到 ID。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-11
        相关资源
        最近更新 更多