make

まけ

UINavigationItem setBackBarButtonItem: でカスタムビューを設定できない件

できないみたいです。

まあ、公開されているUINavigationItem Class ReferenceのbackBarButtonItemの項を読めばよかったのですが、小一時間ほどはまってしまった。

UIBarButtonItemは、カスタムビューを設定して独自画像のボタンにすることができます。

UIButton *settingButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 38, 29)];
    [settingButton setBackgroundImage:[UIImage imageNamed:@"settingButton"] forState:UIControlStateNormal];
    [settingButton addTarget:self action:@selector(showSettings) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *settingButtonItem = [[UIBarButtonItem alloc] initWithCustomView:settingButton];
    self.navigationItem.leftBarButtonItem = settingButtonItem;

で、こんなノリでUINavigationControllerの「戻るボタン」もカスタマイズしたかったのですが、上のやり方だと反映されない。

UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"backButton"]
                                                                          style:UIBarButtonItemStyleBordered
                                                                         target:nil
                                                                         action:nil];    
    [self.navigationItem setBackBarButtonItem:backBarButtonItem];

こんな感じだと一応画像が表示されるけど、標準の戻るボタンの中身に指定の画像が突っ込まれるだけで、ボタンそのものが画像になるわけではない。
で、いろいろはまってドキュメントを読み返したらダメだったという話でした。

つまりは、戻るボタンを独自で実装しないといけないわけで、大した手間ではないけど面倒だ。