2010年11月24日水曜日

ナビゲーションバーに複数ボタンを配置する

InterfaceBuilderベースの場合は以下の前準備が必要 
全部Xcode上でUIを生成してももちろんOK
*IBで下準備*
・カスタマイズしたいナビゲーションバーのあるxibを開く
・追加したいボタンをUIToolbarに乗せたものをview外に作る
※右寄、左寄の両方のボタンをカスタマイズしたい場合はUIToolbarを二つ作る
・UIToolbarの全体の大きさはボタンの数によって横幅を変更する
・作ったツールバーとナビゲーションバーを管理するクラスをIBOutletで繋ぐ
・ボタンのアクションがある場合は同クラスにIBActionを繋ぐ

*X-codeでカスタマイズしたツールバーを乗せる*
UINavigationControllerを管理するクラスのViewdidLoadで以下を呼び出す

//rightButtonsが右寄のボタンをまとめたUIToolBar
//leftButtonsが左寄のボタンをまとめたUIToolBar
-(void)createNaviButtons{ 
 //ツールバーの背景色をナビバーと合わせる
 [rightButtons setTintColor:
   [self.navigationController.navigationBar tintColor]];
 [leftButtons setTintColor:
   [self.navigationController.navigationBar tintColor]];

 //カスタムビューを設定する
 self.navigationItem.leftBarButtonItem
    =[[[UIBarButtonItem alloc]initWithCustomView:leftButtons] autorelease];
 self.navigationItem.rightBarButtonItem
  =[[[UIBarButtonItem alloc]initWithCustomView:rightButtons] autorelease];
}

※問題点
ナビゲーションでプロンプト表示した時にツールバーが
乗っていると背景でばれてしまう。