UIToolBarとそのボタンもコードで追加する
UINavigationControllerにはナビゲーションバーの他に、下端にツールバー(UIToolBar)を配置することができる。
UIViewControllerのプロパティはインタフェースビルダのアトリビュートインスペクタで確認、変更することができる。ツールバーに関してもこれで設定すれば良いように思うのだが、
なのでviewDidLoadメソッド等で以下の一行を追加すると
//ツールバーの初期化 self.navigationController.toolbarHidden = NO;
このように今度は表示される。(ひょっとしたら他に方法があるのかもしれないが、私には分からなかった)
UIToolBarはUINavigationBar同様にボタン(UIBarButtonItem)を配置することができるので、前回同様にコードから追加してみた。
- UINavigationController派生クラスのviewDidLoadメソッド
//ツールバーの初期化 self.navigationController.toolbarHidden = NO; //前 UIBarButtonItem* previous = [[UIBarButtonItem alloc] initWithTitle:@"前" style:UIBarButtonItemStyleBordered target:self action:@selector(flipView)]; // 可変長スペース生成 UIBarButtonItem *flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil]; //後 UIBarButtonItem* next = [[UIBarButtonItem alloc] initWithTitle:@"後" style:UIBarButtonItemStyleBordered target:self action:@selector(next)]; self.navigationController.toolbarItems = @[previous, flexibleItem, next];
UIBarButtonSystemItemFlexibleSpaceで生成されるUIBarButtonItemは実際には目に見えない、ボタンとボタンの間に挟まるスペーサの役目を果たす。
さて、これでツールバーの右端と左端にボタンが二つ配置されるはずだ。
配置されないし。
今度はUIBarButtonItemを配置するのはself.navigationController.toolbarItemsではなく、なんとself.toolbarItemsなのである。
self.toolbarItems = @[previous, flexibleItem, next];
一貫性ないじゃん、と突っ込みたくなるのだが仕方が無い。
前回のエントリと合わせてUINavigationBar、UIToolBar周りの作りと設定の仕方にはかなり癖があるので注意が必要である。私のようにいきあたりばったりではなく、信頼性の高い書籍やリファレンスを片手に作るべきだろう : )