Navigation Barの戻るボタンのタイトルを変える
ナビゲーションバーの左側に出す、前の画面に戻るボタン、デフォルトでは前画面のView Controllerのタイトルがボタンのラベルとして使われる。
これを別のものに変えようと思った。
UINavigationBarクラスのリファレンスに、NavigationItemのbackBarButtonItemプロパティに自分でアイテムを設定するとそれが表示されるよーと書いてあるので、自作のViewControllerサブクラスで次のようにしてみた。
- (void)viewDidLoad { [super viewDidLoad]; self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"戻る" style:UIBarButtonItemStyleDone target:self action:@selector(popViewController)]; } - (void)popViewController { [self.navigationController popViewControllerAnimated:YES]; }
戻るボタンに好きなタイトルを設定するため、UIBarButtonItemのinitWithTitleでボタンを作成する。
引数にtargetやactionというのがあって、ボタンが押されたときtargetに対してセレクタactionが実行されるとのことだったので、ボタンが押されたら前の画面に戻るようViewControllerのスタックをpopするようにしておく。
しかし、いろいろ試してみてたら、actionに渡しているpopViewControllerが呼ばれていないことがわかった。popViewControllerをactionに指定しなくても、ボタンを押したら前の画面に戻る。
こちらの記事 http://d.hatena.ne.jp/KishikawaKatsumi/20091120/1258679168 によれば、targetやactionは設定しても無視される、とのこと。
ドキュメントへのリンクも張ってあるけど、ドキュメントが更新されたみたいでその記述は見当たらない…
わざわざleftBarButtonItemとは別にbackBarButtonItemを用意してあるくらいだから、前の画面に戻るためだけに使うものなのは当たり前でしょ、てとこか。
忘れてまたはまりそうなのでメモっておく。