在swift中添加UIBarButton项

azo*_*chz 16 uibarbuttonitem swift ios8

我正在尝试将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:")
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器没有错误,但我得到的只是一个简单的导航栏.

如何显示UIBarButtonItem?

小智 35

要将项目的增加NavigationBarNavigationController,或NavigationBar添加到ViewController,则需要先通过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)
Run Code Online (Sandbox Code Playgroud)

要将按钮切换到左侧,只需更换setRightBarButtonItemsetLeftBarButtonItemsetLeftBarButtonItems.


Suj*_*U N 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")
}
Run Code Online (Sandbox Code Playgroud)