rightBarButtonItem不会出现在导航栏iOS中

时间:2012-09-12 20:23:43

标签: objective-c uinavigationcontroller uibarbuttonitem uinavigationitem rightbarbuttonitem

我在显示导航栏的rightBarButtonItem时遇到问题 - 我试图在Application Delegate中以编程方式创建它,我的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线程来纠正问题并没有取得任何成功。

任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:31)

您需要将条形按钮项目附加到自定义视图控制器,而不是导航控制器。来自Updating the Navigation Bar

  

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

     

(...)

     

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

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

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

  •   

因此,请更换:

self.navController.navigationItem.rightBarButtonItem = barButton;

使用:

list.navigationItem.rightBarButtonItem = barButton;