[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を使うと良く感じることですが、色々な拡張性を持っていて、スゴいなぁと感じる今日このごろです。自分で今後フレームワークを開発する際の、スゴく良い経験をさせてもらっていると感じます。
今回も最後までお読み頂きましてありがとうございました☆