2016-04-01 38 views
5

在使用我UIWebView的一個按鈕的那一刻IM按鈕通過每個網頁回去用戶搜索和偉大的工作。不過反正是有使用導航欄後退按鈕回到先前通過網頁和即使世界上沒有更多的頁面要回去再打開一個視圖控制器?斯威夫特 - UIWebView的背部與導航欄後退按鈕

使用的繼承人回去這是剛剛連接到一個UIButton代碼IM。

// Back button events 
func onBackButton_Clicked(sender: UIButton) 
{ 
    if(webview.canGoBack) 
    { 
     webview.goBack() 
    } 
} 

任何幫助將是偉大的。

回答

11

添加到您的代碼,您可以添加一個else這將運行時,有沒有更多的網絡歷史記錄,並彈出視圖控制器,它會回到以前的視圖控制器(如果您有您查看導航控制器控制器) :

if(webview.canGoBack) { 
    //Go back in webview history 
    webview.goBack() 
} else { 
    //Pop view controller to preview view controller 
    self.navigationController?.popViewControllerAnimated(true) 
} 

此外,如果要刪除默認的返回按鈕,並使用您的自定義按鈕,在viewDidLoad中添加以下代碼:

self.navigationItem.backBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.Plain, target: self, action: "onBackButton_Clicked:") 

而從上述更改方法:

onBackButton_Clicked(sender: UIButton) 

到:

onBackButton_Clicked(sender: UIBarButtonItem) 
+0

這幫助,但我不得不將其改爲'self.navigationController .popViewControllerAnimated(真)' – ADuggan

+0

更新了答案;)希望幫助 –

+0

''backBarButtonItem''可能不適合這裏。相反,使用自定義的''如下面馬克西姆Vantillard提到leftBarButtonItem''。 iOS中的後退按鈕實際上是爲最上面的控制器下面的控制器定義的。 – RajV

4

我建議超載後退按鈕功能和檢查的歷史。

override func viewDidLoad { 
     super.viewDidLoad() 
     self.navigationItem.hidesBackButton = true 
     let newBackButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Bordered, target: self, action: "back:") 
     self.navigationItem.leftBarButtonItem = newBackButton; 
    } 

    func back(sender: UIBarButtonItem) { 
     if(webview.canGoBack) { 
      webview.goBack() 
     } else { 
      self.navigationController.popViewController(animated:true) 
     } 
    } 
0

你需要從第一加載的網頁通過以前的網頁使用BackBarButton到 1.導航回到 2.招回以前的控制器。 後者要求似乎得到滿意的後退按鈕導航欄上的時刻。你必須做的是添加一個自定義BackButton。 ?

override func viewDidLoad() 
{ 
    super.viewDidLoad() 
    leftButton = UIButton(type: UIButtonType.Custom) 
    leftButton.frame = CGRectMake(0, 0, 36, 36) 
    leftButton.clipsToBounds = true 
    leftButton.setImage(UIImage(named: "yourBackButton.png"), forState: .Normal) // add custom image 
    leftButton.addTarget(self, action: "onBackButton_Clicked:", forControlEvents: UIControlEvents.TouchUpInside) 
    let leftBarButton = UIBarButtonItem() 
    leftBarButton.customView = leftButton 
    self.navigationItem.leftBarButtonItem = leftBarButton 
} 

func onBackButton_Clicked(sender: UIButton) 
{ 
    if(webview.canGoBack) { 
     webview.goBack() 
    } 
    else { 
     self.navigationController.popViewController(animated: true) 
    } 
}