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

时间:2011-10-06 06:41:58

标签: iphone objective-c ios

我通过库添加UINavigationBar来查看。我还将UINavigationItem添加到此NavigationBar。

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

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

5 个答案:

答案 0 :(得分:10)

试试这个:

self.navigationItem.leftItemsSupplementBackButton = YES;

如果使用UIBarButtonItems自定义导航控制器,框架默认会删除后退按钮,因为它假定您正在自定义导航栏。使用该行再次添加后退按钮。

答案 1 :(得分:3)

仅当您将另一个视图推送到导航堆栈(由self.navigationItem.backBarButtonItem控制后,如果导航栏上没有显示左侧按钮),

self.navigationController才会显示。

来自Apple文档:

  

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

答案 2 :(得分:2)

试试这段代码,

**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

}

答案 3 :(得分:2)

试试这段代码可能对你有帮助

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

答案 4 :(得分:0)

这有点旧,但万一有人在寻找答案......

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

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

然后,当您使用

将视图推送到视图堆栈时
[self.navigationController pushViewController:aViewController animated:YES];

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