16

ナビゲーション バーの rightBarButtonItem の表示に問題があります - UINavigationController が設定されている Application Delegate でプログラムで作成しようとしています。

コードは次のとおりです。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

// Override point for customization after application launch.
RSCListViewController *list = [[RSCListViewController alloc] initWithStyle:UITableViewStylePlain];
self.navController = [[UINavigationController alloc] initWithRootViewController:list];

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithTitle:@"+"
                                                              style:UIBarButtonItemStylePlain
                                                             target:list
                                                             action:@selector(addPressed:)];

self.navController.navigationItem.rightBarButtonItem = barButton;

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];

[DatabaseManager openDatabase];

return YES;
}

アプリケーションを実行すると、ナビゲーション バーにボタン項目が表示されません。

明らかな何かを見落としているかどうかはわかりません。関連するスタック オーバーフロー スレッドを使用して問題を修正しようとしても、成功していません。

どんな助けでも感謝します。

4

1 に答える 1

43

ナビゲーション コントローラーではなく、カスタム ビュー コントローラーにバー ボタン項目をアタッチする必要があります。ナビゲーションバーの更新から:

さらに、ナビゲーション コントローラー オブジェクトは、ナビゲーション スタック上のビュー コントローラーに関連付けられたナビゲーション項目 (UINavigationItem クラスのインスタンス) を使用して、ナビゲーション バーのコンテンツを動的に構築します。したがって、ナビゲーション バーのコンテンツを変更するには、カスタム ビュー コントローラーのナビゲーション項目を構成する必要があります。

(...)

ナビゲーション コントローラーは、ナビゲーション バーの右側を次のように更新します。

  • 新しい最上位ビュー コントローラーにカスタムの右バー ボタン項目がある場合、その項目が表示されます。カスタムの右バー ボタン項目を指定するには、View Controller のナビゲーション項目の rightBarButtonItem プロパティを設定します。

  • カスタムの右バー ボタン項目が指定されていない場合、ナビゲーション バーの右側には何も表示されません。

したがって、次のように置き換えます。

self.navController.navigationItem.rightBarButtonItem = barButton;

と:

list.navigationItem.rightBarButtonItem = barButton;
于 2012-09-12T20:42:39.840 に答える