在Swift中添加UIBarButton项

17

我想向我的导航栏添加一个UIBarButton项。

这是我的导航栏类声明:

import UIKit

class NavigationBarController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()

        configureToolbar()        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    // #pragma mark - Navigation bar data source

    func configureToolbar() {
        let toolbarButtonItems = [
            searchBarButtonItem
        ]
        toolbar.setItems(toolbarButtonItems, animated: true)
    }

    var searchBarButtonItem: UIBarButtonItem {
        return UIBarButtonItem(barButtonSystemItem: .Search, target: self, action: "barButtonItemClicked:")
    }
}

编译器没有报错,但我只能得到一个普通的导航栏。

我该如何使UIBarButtonItem显示出来?


请查看此详细答案 https://dev59.com/SV0a5IYBdhLWcg3wt6qK#30022852 - Bhavin Bhadani
3个回答

36

要向NavigationController或添加到ViewControllerNavigationBar中添加项目,您需要先通过NavigationItem进行。请尝试以下操作:

self.navigationItem.setRightBarButtonItems(navigationBarButtonItemsArray, animated: true)

// Or if you just want to insert one item.

self.navigationItem.setRightBarButtonItem(UIBarButtonItem(barButtonSystemItem: .Search, target: self, action: "barButtonItemClicked:"), animated: true)

要将按钮切换到左侧,只需将setRightBarButtonItem替换为setLeftBarButtonItemsetLeftBarButtonItems


7
您可以在导航栏的右侧或左侧添加多个按钮。我将向您展示如何在右侧添加按钮,您也可以按照相同的步骤在左侧添加按钮。
override func viewDidLoad()
{
    let Nam1BarBtnVar = UIBarButtonItem(barButtonSystemItem: .Edit, target: self, action: #selector(Nam1BarBtnKlkFnc(_:)))
    let Nam2BarBtnVar = UIBarButtonItem(barButtonSystemItem: .Add, target: self, action: #selector(Nam2BarBtnKlkFnc(_:)))

    self.navigationItem.setRightBarButtonItems([Nam1BarBtnVar, Nam2BarBtnVar], animated: true)
}

func Nam1BarBtnKlkFnc(BtnPsgVar: UIBarButtonItem)
{
    print("Nam1BarBtnKlk")
}

func Nam2BarBtnKlkFnc(BtnPsgVar: UIBarButtonItem)
{
    print("Nam2BarBtnKlk")
}

3

针对Swift 3进行更新:

使用以下代码以编程方式添加UIBarButton项。

要添加左侧栏按钮:

  self.navigationItem.leftBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "your_image_name"), style:  UIBarButtonItemStyle.plain, target: self, action: #selector(yourViewControllerName.barButtonClickAction))

添加右侧按钮:
  self.navigationItem.rightBarButtonItem = UIBarButtonItem(image: #imageLiteral(resourceName: "your_image_name"), style:  UIBarButtonItemStyle.plain, target: self, action: #selector(yourViewControllerName.barButtonClickAction))

方法定义:

func barButtonClickAction() {
    print("Button click...")
}

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