以编程方式将UIBarButtonItem添加到UINavigationBar

Cry*_*tal 19 iphone uinavigationbar uibarbuttonitem ios

我放弃了在UINavigationBarUIInterfaceBuilder.我以模态方式呈现此视图,只想UIBackBarButton返回到我的上一个视图.我有一个出口和财产UINavigationBar声明.我想在我的viewDidLoad方法中,我可以创建一个UIBackButton这样的:

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

但我没有看到我UIBackBarButtonItemUINavigationBar.我想我在这里做错了,因为我不认为我UINavigationBar知道我试图以UIBackBarButtonItem这种方式添加它.我是否必须创建一个NSArray,将按钮放入其中,并为NavigationBar设置setItems?

我对navigationItem属性如何工作UINavigationBar以及对setItems感到困惑.任何帮助,将不胜感激.谢谢!

Suh*_*tel 16

您正尝试在模式视图中设置后退按钮项,该视图不添加backBarButtonItem.这导致按钮(或任何类型的后退按钮)不显示.backBarButtonItem主要用于推送视图控制器,当您按下新视图控制器(顶部项目)时,它会从父节点(下面的下一项)添加后退按钮.在苹果UINavigationItem文档说:

当此项目是导航栏的后退项目时 - 当它是顶部项目下方的下一个项目时 - 它可以表示为导航栏上的后退按钮.使用此属性指定后退按钮.您设置的后栏按钮项目的目标和操作应为零.默认值是显示导航项标题的条形按钮项.

要按照您的意愿获得左侧的后退按钮,请尝试更改

self.navigationItem.backBarButtonItem = backButton;
Run Code Online (Sandbox Code Playgroud)

self.navigationItem.leftBarButtonItem = backButton;
Run Code Online (Sandbox Code Playgroud)


Rah*_*rma 12

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

{
    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];    

}
Run Code Online (Sandbox Code Playgroud)

将在调用视图上显示NextViewController作为Modal视图,NextViewController将为它提供一个navigationController.

在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];
}
Run Code Online (Sandbox Code Playgroud)

使用后退按钮来关闭模态视图.希望能帮助到你.


Jay*_*bey 8

使用下面的代码段:

//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
}
Run Code Online (Sandbox Code Playgroud)

可用的不同风格类型有:

UIBarButtonItemStylePlain, UIBarButtonItemStyleBordered, UIBarButtonItemStyleDone
Run Code Online (Sandbox Code Playgroud)