Swift-UIWebview后退按钮与导航栏后退按钮



目前,我使用uiwebview上的一个按钮来返回用户搜索的每个网页,其工作效果非常好。但是,是否可以使用导航栏返回按钮返回到以前的网页,当没有更多页面可返回时,打开以前的视图控制器?

这是我用来返回的代码,它刚刚连接到一个UIButton。

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

任何帮助都会很棒。

添加到您的代码中,您可以添加一个在没有更多web历史记录时运行的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)

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

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)
        }
    }

您需要使用BackBarButton1.浏览回以前的网页2.从第一个加载的网页移回上一个控制器。目前导航栏上的BackButton似乎满足了后一个要求。您要做的是添加一个自定义的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)
    }
}

最新更新