16

我在显示导航栏的 rightBarButtonItem 时遇到问题 - 我正在尝试在应用程序委托中以编程方式创建它,我的 UINavigationController 已在其中设置。

代码如下:

- (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;
}

运行应用程序,导航栏上不会出现任何按钮项。

我不确定我是否遗漏了一些明显的东西——我尝试使用相关的 Stack Overflow 线程来纠正问题并没有取得任何成功。

任何帮助表示赞赏。

4

1 回答 1

43

您需要将条形按钮项附加到自定义视图控制器,而不是导航控制器。从更新导航栏

此外,导航控制器对象使用与导航堆栈上的视图控制器关联的导航项(UINavigationItem 类的实例)动态构建导航栏的内容。因此,要更改导航栏的内容,您必须为自定义视图控制器配置导航项。

(...)

导航控制器更新导航栏右侧如下:

  • 如果新的顶级视图控制器具有自定义右栏按钮项,则显示该项。要指定自定义右栏按钮项,请设置视图控制器导航项的 rightBarButtonItem 属性。

  • 如果未指定自定义右栏按钮项,则导航栏右侧不显示任何内容。

因此,替换:

self.navController.navigationItem.rightBarButtonItem = barButton;

和:

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