【Swift】NavigationBarにBarButtonを追加

どうも、ねこきち(@nekokichi1_yos2)です。

 

NavigationBarにBarButtonを追加します。

 

解説

 

UIBarButtonを代入し、

  • title(ボタンの文字)
  • style(ボタンの種類)
  • target(処理の対象?)
  • action(ボタン押下時の処理)

を設定します。

 

styleには、

  • plain
  • done

の2種類があり、役割が違うそうです。

 

let leftback = UIBarButtonItem(title: "キャンセル", style: .plain, target: self, action: #selector(back))

 

(参考)

teratail.com

 

ボタンの追加は、ViewControllerに組み込まれているNavigationControllerのBarButton(右か左)を指定し、先ほど作ったボタンを代入します。

self.navigationItem.leftBarButtonItem = leftback

 

ただし、右と左の両方にBarButtonを設置する場合、注意点があります。

 

1つのBarButtonで右と左の位置に配置すると、最後に指定した方だけに配置されてしまいます。

 

let leftback = UIBarButtonItem(title: "キャンセル", style: .plain, target: self, action: #selector(back))
        
self.navigationItem.leftBarButtonItem = leftback
self.navigationItem.rightBarButtonItem = leftback

 

f:id:nekokichi_yos2:20200726115452p:plain

 

なので、右と左にBarButtonを配置するなら、2個作りましょう。

 

結果

 

f:id:nekokichi_yos2:20200726114045p:plain

 

ソースコード

 

import UIKit

class navigation: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
//ボタンを生成 let leftback = UIBarButtonItem(title: "キャンセル", style: .plain, target: self, action: #selector(back)) let rightback = UIBarButtonItem(title: "キャンセル", style: .plain, target: self, action: #selector(back)) //ボタンを追加 self.navigationItem.leftBarButtonItem = leftback self.navigationItem.rightBarButtonItem = rightback } @objc func back() { self.navigationController?.popViewController(animated: true) } }