UIBarButtonItem,使用Swift添加返回按钮

4
我希望为我的webview应用程序添加一个返回按钮。
查看UIBarButtonItem,我似乎找不到“返回”按钮。参考代码:
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let url = NSURL(string: "http://google.com")!
    webView.loadRequest(NSURLRequest(URL: url))
    webView.allowsBackForwardNavigationGestures = true

    let refresh = UIBarButtonItem(barButtonSystemItem: .Refresh, target: webView, action: #selector(webView.reload))

    let back = UIBarButtonItem(barButtonSystemItem: .Back, target: webView, action: #selector(webView.goBack))

    toolbarItems = [back, refresh]
    navigationController?.toolbarHidden = false

}

我该如何在工具栏中添加返回按钮?

1个回答

6

我认为你忘记在navigationItem中添加UIBarbuttonItem了。

因此,你需要编写如下代码:

self.navigationItem.rightBarButtonItems = toolbarItems // that show two right side button. 

如果你想在导航栏左侧显示返回按钮,右侧显示刷新按钮,则必须编写以下代码:

 self.navigationItem.rightBarButtonItem = refresh
 self.navigationItem.leftBarButtonItem = back

这将出现在您的导航返回按钮左侧和刷新按钮右侧。

因此,您的代码应该类似于以下内容:

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

    let url = NSURL(string: "http://google.com")!
    webView.loadRequest(NSURLRequest(URL: url))
    webView.allowsBackForwardNavigationGestures = true

    let refresh = UIBarButtonItem(barButtonSystemItem: .Refresh, target: webView, action: #selector(webView.reload))

    //let back = UIBarButtonItem(barButtonSystemItem: .Back, target: webView, action: #selector(webView.goBack))

    let back = UIBarButtonItem(title: "Back",style: .Plain,target: webView,action: #selector(webView!.goBack))

   self.navigationItem.rightBarButtonItem = refresh
     self.navigationItem.leftBarButtonItem = back
    navigationController?.toolbarHidden = false

}

如果你想在左边栏添加多个按钮,那么可以创建另外一个 UIBarbuttonItem 对象,类似这样:

let undo = UIBarButtonItem(barButtonSystemItem: .Undo, target: webView, action: #selector(webView.undo))

self.navigationItem.leftBarButtonItems = [back,undo]

这将在导航栏上显示两个左侧按钮。


1
谢谢您的回答,虽然我似乎无法理解我应该将这段代码放在哪里以添加这些相应的按钮及其操作?请查看我的代码:http://pastebin.com/Z99nmJqW -- 您能否友好地澄清一下? - Henrik Petterson
谢谢您的更新,但是返回按钮显示为“撤销”按钮,请查看此行代码:let back = UIBarButtonItem(barButtonSystemItem: .Undo... -- 这就是问题所在。我该如何使用返回按钮或符号呢? - Henrik Petterson
1
很抱歉没有明确解释。let back = UIBarButtonItem(barButtonSystemItem: .Back 不存在。 .Back 不是UIBarButtonItem选项。这就是为什么我只是用.Undo作为测试。我的问题是,怎样才能显示一个返回按钮? - Henrik Petterson
所以,这段代码会出现以下错误:Type 'UIBarButtonSystemItem' has no member 'Back'... - Henrik Petterson
3
苹果公司没有提供“返回”按钮,因此如果需要此按钮,您需要创建一个类似于以下代码的按钮:let b = UIBarButtonItem(title: "返回", style: .Plain, target: webView, action: #selector(webView!.goBack))。请注意,此代码需要自行添加。 - Nitin Gohel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接