2012/07/27更新

[XCODE] UINavigationBarの左右にボタンを追加するいろいろな方法

このエントリーをはてなブックマークに追加      

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

UINavigationBarItem Sample



ナビゲーションバーに追加するボタン

ナビゲーションバーには、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を使うと良く感じることですが、色々な拡張性を持っていて、スゴいなぁと感じる今日このごろです。
自分で今後フレームワークを開発する際の、スゴく良い経験をさせてもらっていると感じます。

今回も最後までお読み頂きましてありがとうございました☆






こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。