导航后退按钮不显示,如何将后退按钮添加到UINavigationItem

问题描述:

我通过库添加UINavigationBar来查看。我还将UINavigationItem添加到此导航栏中。导航后退按钮不显示,如何将后退按钮添加到UINavigationItem

在viewController.m中,我添加了下面的代码,但后退按钮不显示。

self.navigationItem.title = @"List"; 
self.navigationItem.backBarButtonItem.title = @"Back"; 
+1

你试过'self.navigationItem.hidesBackButton = NO'吗? – EmptyStack

+0

只是后退按钮没有显示或整个导航栏? – HeikoG

+1

我只是有这个问题,这解决了它对我来说:http://stackoverflow.com/questions/2485671/uinavigationcontroller-back-button-not-visible-but-works – banDedo

self.navigationItem.backBarButtonItem将示出的有推只有一个又一个视图到导航堆栈,由self.navigationController控制,如果显示导航栏上没有左键。

从苹果文档:

当此项目是导航的背面项棒当其下面的下一个项目的顶部项目 - 它可以被表示为导航栏上的后退按钮。使用此属性来指定后退按钮。您设定的背面按钮项目的目标和动作应为零。默认值是显示导航项目标题的栏按钮项目。

+0

谢谢你的info.Currently我不使用推送的视图导航堆栈。我使用addSubView方法从主视图中调用此视图。所以如何将bar按钮项添加到我的navigationItem或如何启用back bar按钮项。 –

+0

您应该创建自定义按钮并将其设置为'self.navigationItem.leftBarButtonItem'。查看答案@ 516 – Nekto

+0

我试了一下,但还是没有显示。 –

试试这个代码,

**To hide your default back button use this,** 



self.navigationItem.hidesBackButton = YES; 

UIImage* image = [UIImage imageNamed:@"back.png"]; 
    CGRect frame = CGRectMake(0, 0, image.size.width, image.size.height); 
    UIButton* backbtn = [[UIButton alloc] initWithFrame:frame]; 
    [backbtn setBackgroundImage:image forState:UIControlStateNormal]; 
    [backbtn setShowsTouchWhenHighlighted:YES]; 
    [backbtn addTarget:self action:@selector(goBack) forControlEvents:UIControlEventTouchUpInside]; 
    UIBarButtonItem* backButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backbtn]; 
    [self.navigationItem setLeftBarButtonItem:backButtonItem]; 
    [backButtonItem release]; 
    [backbtn release]; 

操作事件的后退按钮:

-(IBAction)goBack{ 
//ur code here 

}

试试这个代码,可能是它的帮助下到U

UIButton *moreButton1 = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [moreButton1 setImage:[UIImage imageNamed:@"left_arrow.png"] forState:UIControlStateNormal]; 
    //[moreButton setImage:[UIImage imageNamed:@"Button_OtherInfo_Active.png"] forState:UIControlStateHighlighted]; 
    [moreButton1 addTarget:self action:@selector(backClick) forControlEvents:UIControlEventTouchUpInside]; 
    [moreButton1 setFrame:CGRectMake(0, 0, 50,30)]; 
    self.navigationItem.leftBarButtonItem=[[UIBarButtonItem alloc] initWithCustomView:moreButton1]; 

把这个代码在viewDidLoad

-(void)backClick 
{ 
    [self.navigationController popViewControllerAnimated:YES]; 
} 

这是有点老了,但如果有人在寻找一个答案......

后退按钮会自动显示,但当前视图(而不是一个被推送)需要有一个标题。例如:

- (void)viewDidLoad 
{ 
    self.title = @"Home"; 
    [super viewDidLoad]; 
} 

然后,当你推的视图到图堆栈

[self.navigationController pushViewController:aViewController animated:YES]; 

返回按钮显示出来。无需混淆UINavigationItem或UINavigationBar。使用这些来自定义导航栏。看一下名为NavBar的示例项目,它是xcode的一部分。

试试这个:

self.navigationItem.leftItemsSupplementBackButton = YES; 

如果您定制具有UIBarButtonItems您的导航控制器框架默认情况下删除后退按钮,因为它假设您自定义导航栏。使用该行再次添加后退按钮。