【Objective-C】UIBarButtonItemの右ボタンを動的に差し替える

【Xcode5.1.1 + iOS 7.1 + MacOX10.9.4】

カメラロールでサムネイル表示したときに、右上に出る「選択」>「キャンセル」の切替と同じやつです。これってViewは切り換えてないよなあと思ったので、ボタンの差し替えをテストしてみました。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    //削除ボタンを追加
    UIBarButtonItem *delButton = [[UIBarButtonItem alloc]
                                  initWithBarButtonSystemItem:UIBarButtonSystemItemTrash
                                                                               target:self
                                                                               action:@selector(delButtonDidPush:)];
    

    self.navigationItem.rightBarButtonItem = delButton;
}

-(void)delButtonDidPush:(UIBarButtonItem *)button
{
    NSLog(@" -- trash!!");
    
    //
    UIBarButtonItem *canelButton = [[UIBarButtonItem alloc]
                                    initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                    target:self
                                    action:@selector(cancelButtonDidPush:)];
    self.navigationItem.rightBarButtonItem = canelButton;
}

-(void)cancelButtonDidPush:(UIBarButtonItem *)button
{
    NSLog(@" -- cancel!!");
    
    //削除ボタンを追加
    UIBarButtonItem *delButton = [[UIBarButtonItem alloc]
                                  initWithBarButtonSystemItem:UIBarButtonSystemItemTrash
                                  target:self
                                  action:@selector(delButtonDidPush:)];
    
    
    self.navigationItem.rightBarButtonItem = delButton;
    
}

これでちゃんと動いてるし、タップのイベントも片方しか出てこないので、たぶんいいはず。
UIToolBarについては、こんな記事が。

なんとなく|UINavigationController の UIToolBar で Button 表示を切り替えたいメモ

たぶんnavigationItem.rightBarButtonItemは1つしか置けないので、重なったりすることはないのでは?と推測。