web-dev-qa-db-ja.com

swiftにUIBarButtonitemを追加する

ナビゲーションバーに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を表示するにはどうすればよいですか?

17
azochz

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)

ボタンを左側に切り替えるには、setRightBarButtonItemsetLeftBarButtonItemまたはsetLeftBarButtonItemsに置き換えます。

35
hichamoaj

ナビゲーションバーの右側または左側に複数のボタンを追加できます。私はあなたに右側に追加するように見せます、そしてあなたは左側にも同じことをすることができます

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")
}
7
Sujay U N

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...")
}
2
Kiran jadhav