2012年4月13日金曜日

NavigationControllerにleftBarButtonItemとbackBarButtonItemを表示

NavigationControllerにはbackBarButtonItem・leftBarButtonItem・rightBarButtonItemと左右に項目を配置する位置があります。

右は置いといて左。
NavigationBarに戻るボタンとほかにカスタムボタンを左側に配置したいと思ったんですがドキュメントを見ていると
”左の位置にカスタムボタンやビューを割り当て、それらでデフォルトの「戻る」ボタンを置き換えるには、leftBarButtonItemプロパティにUIBarButtonItemオブジェクトを割り当てます。”
とあります。
置き換えるということは共存はできないのかなと。。。

いろいろと調べてたらUIButtonTypeにAPIに記載されていない値が存在するみたいでそれを使うことでそれっぽいのが実装できました。
- (void)viewDidLoad
{
    [super viewDidLoad];

    UIButton *backButton = [UIButton buttonWithType:101];
    [backButton addTarget:self action:@selector(doBack:)
         forControlEvents:UIControlEventTouchUpInside];
    [backButton setTitle:@"戻る" forState:UIControlStateNormal];

    UIBarButtonItem *backItem = [[UIBarButtonItem alloc]
         initWithCustomView:backButton];

    UIBarButtonItem *folderItem = [[UIBarButtonItem alloc]
         initWithTitle:@"フォルダ" style:UIBarButtonItemStylePlain
         target:self action:@selector(doFolder:)];

    self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:backItem, folderItem, nil];

    [folderItem release];
    [backItem release];
    [backButton release];
}

// 戻るボタンの実装
- (void)doBack:(id)sender
{
    [self.navigationController popViewControllerAnimated:YES];
}


戻るボタンの処理を実装する必要はありますが、一応これで上のような画面を作ることができます。



0 件のコメント:

コメントを投稿