Swift - 带有NavigationBar后退按钮的UIWebview后退按钮

ADu*_*gan 8 uiwebview ios swift

目前我使用我的uiwebview上的按钮返回用户搜索的每个网页,并且它的工作效果很好.但是,无论如何使用导航栏后退按钮返回以前的网页,当没有更多的页面返回时,然后打开以前的视图控制器?

继续使用的代码是返回,它只是连接到UIButton.

// Back button events
func onBackButton_Clicked(sender: UIButton)
{
    if(webview.canGoBack)
    {
        webview.goBack()
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助都会很棒.

Joe*_*ton 22

添加到您的代码中,您可以添加一个在没有更多Web历史记录时运行的其他内容并弹出视图控制器,这将返回到上一个视图控制器(如果您在导航控制器中查看控制器):

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

此外,如果要删除默认后退按钮并使用自定义按钮,请在ViewDidLoad中添加以下代码:

self.navigationItem.backBarButtonItem = UIBarButtonItem(image: image, style: UIBarButtonItemStyle.Plain, target: self, action:  "onBackButton_Clicked:")
Run Code Online (Sandbox Code Playgroud)

并改变上面的方法:

onBackButton_Clicked(sender: UIButton)
Run Code Online (Sandbox Code Playgroud)

至:

onBackButton_Clicked(sender: UIBarButtonItem)
Run Code Online (Sandbox Code Playgroud)


小智 5

我建议重载后退按钮功能并检查历史记录。

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)
        }
    }
Run Code Online (Sandbox Code Playgroud)