Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 以编程方式将UIBarButtonim添加到UINavigationBar_Ios_Iphone_Uinavigationbar_Uibarbuttonitem - Fatal编程技术网

Ios 以编程方式将UIBarButtonim添加到UINavigationBar

Ios 以编程方式将UIBarButtonim添加到UINavigationBar,ios,iphone,uinavigationbar,uibarbuttonitem,Ios,Iphone,Uinavigationbar,Uibarbuttonitem,我在UIInterfaceBuilder中插入了UINavigationBar。我以模式呈现此视图,只希望UIBackBarButton返回到我的上一个视图。我已声明此UINavigationBar的出口和属性。我想在我的viewDidLoad方法中,我可以创建一个UIBackButton如下: UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemSt

我在
UIInterfaceBuilder
中插入了
UINavigationBar
。我以模式呈现此视图,只希望
UIBackBarButton
返回到我的上一个视图。我已声明此
UINavigationBar
的出口和属性。我想在我的
viewDidLoad
方法中,我可以创建一个
UIBackButton
如下:

UIBarButtonItem *backButton = 
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonItemStyleBordered 
                                              target:self 
                                              action:@selector(goBack)];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
但是我在
UINavigationBar
上看不到我的
UIBackBarButtonItem
。我认为我在这里做错了什么,因为我不认为我的
UINavigationBar
知道我正试图以这种方式向它添加这个
uibackbarbuttonim
。我是否需要创建一个
NSArray
,将按钮放入其中,然后为导航栏设置项目


我对navigationItem属性与
UINavigationBar
的setItems的工作方式感到困惑。任何帮助都将不胜感激。谢谢

您试图在模式视图中设置Back按钮项,该视图不添加BackburbuttonItem。这就是导致按钮(或任何类型的后退按钮)不显示的原因。backBarButtonItem主要用于已按下的视图控制器,当您按下新的视图控制器(顶部项目)时,该视图控制器会从父视图(下面的下一项)添加一个后退按钮。报告说:

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

若要按您的意愿在左侧设置“后退”按钮,请尝试更改

self.navigationItem.backBarButtonItem = 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将有一个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];
}

使用“后退”按钮关闭modalview。希望有帮助。

使用以下代码片段:

//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
}
可用的不同样式类型包括:

UIBarButtonItemStylePlain, UIBarButtonItemStyleBordered, UIBarButtonItemStyleDone

您可以在不创建新UIBarButtonItem的情况下使用此设置器:

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

为什么会这样。。。当有一个开箱即用的系统按钮时?@GabrielTomitsuka:你能更详细地解释一下你的意思吗?已经有一个苹果设计的功能来实现这一点;创建一种新型的uibarbuttonite是没有必要的。
[self.navigationItem.leftBarButtonItem setAction:@selector(doBackButton:)];
[self.navigationItem.leftBarButtonItem setTarget:self];