2016-11-27 40 views
0

在我的项目中有很多通过锚链接相互连接的html文件。 通过UIWebView在UITableView中选择后显示所有html文件。一旦加载锚链接工作,用户可以去选择的HTML。 现在问题出现时,想要回去,因为无论我做导航栏中的后退按钮带我们到tableView不是以前的HTML。 如何添加后退按钮,以及如何知道在任何给定的时间通过UIWebView可以看到哪些html?转到iOS中的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) 



} 

回答

1

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

P.S:我假设你在相同的webView中的html文件之间导航。

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

enter image description here

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

enter image description here

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

希望这有助于。

+0

谢谢你的答案,它帮助了我很多,虽然它不回到以前的viewController,但我想通了。但是,我如何知道现在显示哪个html,例如改变标题? – Ramtin

+1

很高兴帮助。那么,它不应该让你回到以前的viewController,它代表了常规浏览器中的“后退”按钮。您可以通过以下方式获取加载的webView页面的当前URL:(webView.request?.URL.absoluteString)! –

+0

非常感谢,你是我的救世主 – Ramtin

0

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

0

在我的情况下,我做了一个VC的属性isInitialWebPageLoaded,它反映了是否从HTML字符串加载webView - 这暗示该用户没有点击链接或发生了其他事情。

为了得到知道什么时候发生的VC需要符合UIWebViewDelegate协议和实施func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool这样的:

​​3210

之后每后退按钮的动作被调用我简单检查:

if webView.canGoBack { 
    webView.goBack() 
} else if isInitialWebPageLoaded == false { 
    webView.loadHTMLString(yourHTMLString, baseURL: nil) 
} else { 
    navigationController?.popViewController(animated: true) 
} 

希望它有帮助。