以编程方式向UINavigationBar添加一个UIBarButtonItem

我在UINavigationBar中放入了一个UINavigationBar 。 我以模态方式呈现这个视图,只是想要一个UIBackBarButton返回到我的最后一个视图。 我有一个sockets和属性来声明这个UINavigationBar 。 我想在我的viewDidLoad方法,我可以创build一个UIBackButton像这样:

 UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleBordered target:self action:@selector(goBack)]; self.navigationItem.backBarButtonItem = backButton; [backButton release]; 

但是我没有在UINavigationBar上看到我的UIBackBarButtonItem 。 我想我在这里做错了什么,因为我不认为我的UINavigationBar知道我试图以这种方式添加这个UIBackBarButtonItem它。 我将不得不做创build一个NSArray ,把它的button和setItems的NavigationBar?

我很困惑如何导航项目属性工作与UINavigationBar的setItems以及。 任何帮助,将不胜感激。 谢谢!

您正试图在不添加backBarButtonItem的模式视图中设置后退button项。 这是什么导致button(或任何forms的后退button)不显示。 backBarButtonItem主要用于推送视图控制器,当您推送一个新的视图控制器(顶部项目)时,该视图控制器具有从父项(下面的下一项)添加的返回button。 Apple UINavigationItem文档说:

当这个项目是导航栏的后面项目时(当它是最上面的项目下面的下一个项目时),它可以在导航栏上表示为后退button。 使用此属性来指定后退button。 你设定的后面条button项目的目标和动作应该是零。 默认值是显示导航项目标题的栏button项目。

要像您希望的那样获取左侧的后退button,请尝试更改

 self.navigationItem.backBarButtonItem = backButton; 

 self.navigationItem.leftBarButtonItem = backButton; 

从视图控制器进行这样的调用

 { NextViewController* vcRootView = [[NextViewController alloc] initWithNibName:@"NextView" bundle:[NSBundle mainBundle]]; UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:vcRootView]; [vcRootView release]; [self.navigationController presentModalViewController:navController animated:YES]; [navController release]; } 

将在调用视图中将NextViewController作为模态视图呈现,而NextViewController将为其提供导航控制器。

在NextViewController实现文件中,所有你需要的是这个

 - (void)viewDidLoad { [super viewDidLoad]; UIBarButtonItem* backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(barButtonBackPressed:)]; self.navigationItem.leftBarButtonItem = backButton; [backButton release]; } -(void)barButtonBackPressed:(id)sender{ [self dismissModalViewControllerAnimated:YES]; } 

有后退button来解除模态视图。 希望能帮助到你。

使用下面的代码片段:

 //Add button to NavigationController UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@“back”, @"") style:UIBarButtonItemStylePlain target:self action:@selector(goBack)]; self.navigationItem.leftBarButtonItem = backButton; //Perform action on back Button - (void) goBack { // Go back task over-here } 

不同的风格types可用:

 UIBarButtonItemStylePlain, UIBarButtonItemStyleBordered, UIBarButtonItemStyleDone 

你可以使用这个setter而不用创build新的UIBarButtonItem:

 [self.navigationItem.leftBarButtonItem setAction:@selector(doBackButton:)]; [self.navigationItem.leftBarButtonItem setTarget:self];