去iOS中的UIWebView中以前的本地HTML

问题描述 投票:0回答:3

在我的项目有很多,其通过锚链接相互连接的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)



}
html ios swift uiwebview
3个回答
2
投票

您可以轻松地通过的WebView“GoBack的”动作链接到UIButton实现这一目标。

我假设你的HTML文件之间在同一个web视图导航。

  • 从故事板,选择web视图,然后选择“连接检查”:

enter image description here

  • 请注意,在“接收操作”列表“GoBack的”选项;从圆形到按钮拖到:

enter image description here

现在,而不是弹出当前视图控制器,按钮应该做所需的功能,以你的情况(回到以前的网页在网页视图)。


1
投票

在我来说,我做了一个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)
}

希望它帮助。


0
投票

您必须在HTML添加一个唯一的ID后来当回去与“GoBack的”动作解析HTML找到ID。

© www.soinside.com 2019 - 2024. All rights reserved.