Modal Segue を使用して UIViewController を提示しています。この UIViewController は UINavigationBar を継承し、ナビゲーション バーの左側に UIBarButtonItem を設定しました。
私の問題は、提示された UIViewController の viewWillAppear メソッドが呼び出されたときに、UIBarButtonItem を非表示にしようとしているのに、UIBarButtonItem が常に表示されることです。myCancelButton という名前の UIViewController の UIBarButtonItem を宣言し、それを Interface Builder で参照しました。
これまでに試したことは次のとおりです(すべて機能しません):
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.backBarButtonItem = nil;
self.myCancelButton = nil;
NSMutableArray *barButtonItems = [self.navigationItem.leftBarButtonItems mutableCopy];
[barButtonItems removeObject:self.myCancelButton];
self.navigationItem.leftBarButtonItems = barButtonItems;
[self.navigationItem.leftBarButtonItems delete:self.myCancelButton];
self.navigationController.navigationItem.leftBarButtonItem = nil;
barButtonItems = [self.navigationController.navigationItem.leftBarButtonItems mutableCopy];
[barButtonItems removeObject:self.myCancelButton];
self.navigationController.navigationItem.leftBarButtonItems = barButtonItems;
[self.navigationController.navigationItem.leftBarButtonItems delete:self.myCancelButton];
[self.myCancelButton setWidth:0.01];
self.navigationItem.hidesBackButton = TRUE;
//Even setting enabled to false doesn't work:
[self.myCancelButton setEnabled:FALSE];
}