24/7 twenty-four seven

iOS/OS X application programing topics.

ナビゲーションバーの戻るボタン (backBarButtonItem) の表示を、画像や任意の文字列に変更する


UINavigationController を使った場合に表示される戻るボタンには、前のビューのタイトルが自動的に表示されます。
戻るボタンの表示に画像を使用したり、任意の文字列に変更するには、遷移前のビューコントローラの navigationItem の backBarButtonItem に設定します。


このボタンが表示されるのは遷移後のビューですが、遷移前のビューコントローラに対して設定するというところに注意が必要です。


ターゲットやアクションは設定しても無視されますが、ドキュメントの通りに nil を指定しましょう。

The target and action of the back bar button item you set should be nil.

UINavigationItem Class Reference
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Create custom back button with image.
    UIBarButtonItem *backBarButtonItem = 
     [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"backBarButtonImage.png"] 
                                      style:UIBarButtonItemStyleBordered
                                     target:nil 
                                     action:nil];

    // Set custom back button.
    /* IMPORTANT:
       Set to PARENT view controller, not next. */
    [self.navigationItem setBackBarButtonItem:backBarButtonItem];
    [backBarButtonItem release];

    // Push next view controller
    NextViewController *controller = [[NextViewController alloc] init];
    [self.navigationController pushViewController:controller animated:YES];
    [controller release];
}