以编程方式向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];