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