2016-11-27 38 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) 
} 

希望它有幫助。