プログラミング

【Swift】NavigationBarにボタンを設定する

swift-eyecatch

検証環境

  • Xcode 12.2
  • Swift 5.3.1

NavigationBarにUIButtonを設定する

storyboard上ではなく、コードで設定していく方法。

// UIBarButtonItemのオブジェクトを作成
let navButton = UIBarButtonItem()

// 画像の設定
navButton.image = nil

// ボタンタイトルの設定
navButton.title = "ボタンタイトル"

// ボタン押されたときに呼ぶ関数を設定
navButton.target = self
navButton.action = #selector(tapSettingButton(sender:))

// 必要に応じてボタンのattributesを設定
navButton.setTitleTextAttributes([.font: UIFont.navBarButtonFont()], for: .normal)

// 作成したUIBarButtonItemオブジェクトを、navigationItemのrightに設定
navigationItem.rightBarButtonItem = navButton

// ボタンがタップされた時の関数を設定
@objc func tapSettingButton(sender: UIButton) {
  // 処理
}

もしくは

navigationItem.rightBarButtonItem = UIBarButtonItem(
    title: "ボタンタイトル",
    style: .plain,
    target: self,
    action: #selector(tapSettingButton(sender:))
)

このような形で、UIBarButtonItemオブジェクトを作成するときに、一度に指定することも可能。

storyboardでボタンを配置して設定することも出来ますが、storyboardはあとから設定が見ずらいので、できればコードで指定しておきたい。