[XCODE] UINavigationBarの左右にボタンを追加するいろいろな方法
こんにちは、@yoheiMuneです。
今日は、ナビゲーションバーにボタンを追加する方法をブログに残したいと思います。
簡単なことなのですが、いつも忘れてしまうので、備忘録としても残したいと思います(・∀・)

追加可能なボタンは選択の自由が広く、UIBarButtonItemは様々な作り方が出来ます。
上図の挿絵は、ナビゲーションバーの左右にボタンが配置されたイメージとなります。
呼び出されたメソッドでは、例えばViewを閉じたりする処理を実行します。
以下のように実装します。
例えば、以下ではUIImageViewを用いて、ボタンを作成しています。
UIBarButtonItem Class Reference
自分で今後フレームワークを開発する際の、スゴく良い経験をさせてもらっていると感じます。
今回も最後までお読み頂きましてありがとうございました☆
今日は、ナビゲーションバーにボタンを追加する方法をブログに残したいと思います。
簡単なことなのですが、いつも忘れてしまうので、備忘録としても残したいと思います(・∀・)

ナビゲーションバーに追加するボタン
ナビゲーションバーには、UIBarButtonItemを使ってボタンを追加することが出来ます。追加可能なボタンは選択の自由が広く、UIBarButtonItemは様々な作り方が出来ます。
上図の挿絵は、ナビゲーションバーの左右にボタンが配置されたイメージとなります。
UIBarButtonItemの作り方とナビゲーションバーへの追加方法
以下のようにいくつか作り方があります。それぞれ用途にあった方法で作成することが可能です。表示文字列を指定してUIBarButtonItemを作成する
// UIBarButtonItemに表示文字列を渡して、インスタンス化します。
UIBarButtonItem *btn = [[UIBarButtonItem alloc]
initWithTitle:@"戻る"
style:UIBarButtonItemStylePlain
target:self
action:@selector(back:)];
// ナビゲーションバーの左側に追加する。
self.navigationItem.leftBarButtonItem = btn;
// なお右側に追加する時は、以下のようにする。
// self.navigationItem.rightBarButtonItem = btn;
targetとactionは、ボタンが押された際に呼び出されるメソッドを指定します。呼び出されたメソッドでは、例えばViewを閉じたりする処理を実行します。
システムアイコンを用いたUIBarButtonItemを作成する
Apple純正アプリでよく見るシステムで用意されたアイコンを用いて、UIBarButtonItemを作成することも出来ます。以下のように実装します。
// initWithBarButtonSystemItemに、表示したいアイコンを指定します。
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemStop
target:self
action:@selector(back:)];
// ナビゲーションバーに追加する。
self.navigationItem.leftBarButtonItem = leftButton;
上記のStop以外にも、Undo, Play, Organizeなど様々な種類を指定できます。任意のUIViewを表示するUIBarButtonItemを作成する
任意のUIViewを用いてUIBarButtonItemを作成する事も可能です。例えば、以下ではUIImageViewを用いて、ボタンを作成しています。
// バーボタンに表示するImageViewを作成します。
UIImage *anImage = [UIImage imageNamed:@"sample.png"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:anImage];
// 画像をタップ時にアクションを取りたいので、ジェスチャーを登録します。
imageView.userInteractionEnabled = YES;
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(openSafari)];
[imageView addGestureRecognizer:tap];
// ボタンを上記で作成したViewを用いて作成します。
UIBarButtonItem *rightButton = [[UIBarButtonItem alloc] initWithCustomView:imageView];
// ナビゲーションバーに追加します。
self.navigationItem.rightBarButtonItem = rightButton;
参考資料
以下の資料を参照しました。より詳しい情報は、以下をご覧下さい。UIBarButtonItem Class Reference
最後に
Cocoaを使うと良く感じることですが、色々な拡張性を持っていて、スゴいなぁと感じる今日このごろです。自分で今後フレームワークを開発する際の、スゴく良い経験をさせてもらっていると感じます。
今回も最後までお読み頂きましてありがとうございました☆






