次のView Controller階層があります:
- ビューコントローラー VC1
- Tab Bar Controller TBC1 - Table View Controller TVC1 と Map View Controller MVC1 につながるようにストーリーボードで構成
- テーブル ビュー コントローラー TVC1
- テーブル ビュー コントローラー TVC2
VC1 では、次のようにします。
[self.navigationController pushViewController:TBC1 animated:YES];
これにより、TVC1 がフォーカスされたタブ バー コントローラーが適切に表示されます。
TVC1 はナビゲーション バー (VC1 コードからプログラムで作成) に [戻る] ボタンを表示します。これにより、VC1 に移動できます。
ただし、TVC1 以降、TVC2 へのナビゲーションがもう 1 つ必要です。このために TVC1 ナビゲーション バーに右ボタンを追加しようとしていますが、表示されません。
TVC1で使用するコードは次のとおりです(rightButtonはTVC1のUIButtonタイプのプロパティです):
self.rightButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem: UIBarButtonSystemItemAdd
target: self
action: @selector(MySelector:)];
self.rightButton.style = UIBarButtonItemStyleBordered;
self.rightButton.title = @"";
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects: self.rightButton, nil];
(これが原因であるかどうかを確認するために、空白のタイトルとスタイルを指定しました。実際にはこれらの値は必要ありません)
MySelector は、TVC1.h で次のように宣言されています。
- (void) MySelector:(id)sender;
また、適切に実装されています。
しかし、上記の rightButton は TVC1 ナビゲーション バーには表示されません。
私は何が欠けていますか?VC1 と TVC1 の間にある TBC1 (タブ バー) が原因で、ナビゲーション プロパティがリセットされていると思われます。
しかし、TVC1 にナビゲーション バーが表示され、VC1 につながる左ボタンが表示されると主張します。TBC1 で、self.navigationItem.rightBarButtonItems に 1 つのオブジェクトが含まれていることを確認しました。これは、間違いなく追加している rightButton です。
どこが間違っていますか?
注: 上記は、iOS 5.0、5.1、および 6.0 シミュレーターのすべてに見られます。