导航栏标题和后退按钮名称是否相同?

时间:2013-04-05 08:36:32

标签: ios xcode uinavigationcontroller uinavigationbar

我在storyboard项目中为导航栏创建了一个标题,但是当我移动到下一个viewcontroller时,后退按钮显示的名称与我之前的导航栏(主导航栏)标题相同。我可以设置单独的标题和后退按钮名称吗?

我尝试了以下代码,但它不起作用?为什么呢?

 self.navigationItem.title=@"Recent Books";
self.navigationItem.backBarButtonItem.title=@"Back";

5 个答案:

答案 0 :(得分:19)

根据UINavigationItem Class Reference

  

“此导航项目位于最顶层项目的正下方   堆栈,导航控制器派生后退按钮   此导航项的导航栏。 [...]如果要指定   后退按钮的自定义图像或标题,您可以指定自定义   条形图按钮项(带有您的自定义标题或图像)到此属性   代替“。

所以在你推动其他VC的第一个VC中试试这个

self.navigationItem.title=@"Recent Books";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
                                   initWithTitle:@"Back"
                                   style:UIBarButtonItemStylePlain
                                   target:nil
                                   action:nil];
self.navigationItem.backBarButtonItem=backButton;

答案 1 :(得分:6)

假设你正在推动你的viewcontroller A - >乙

在viewcontroller中尝试在viewDidLoad方法

中添加此代码
UIBarButtonItem *btn_Back = [[UIBarButtonItem alloc] initWithTitle:@"Back"
 style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem=btn_Back;

所以你会在viewcontroller B中看到你的“后退”按钮

答案 2 :(得分:2)

以下内容应解决您的问题

-(void)viewDidAppear:(BOOL)animated
{
    self.navigationController.navigationBar.backItem.title = @"back";
}

您也可以使用此Objective-C语法

[[self.navigationController.navigationBar backItem] setTitle:@"back"];

答案 3 :(得分:1)

就这样做,这是我迄今为止找到的最简单的方法之一:

创建自定义后退按钮并将其添加到导航栏左按钮项属性中:

- (void)viewDidLoad
{
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *backBtnImage = [UIImage imageNamed:@"Backnavigation.png"]  ; // Here set the back button image
[backBtn setBackgroundImage:backBtnImage forState:UIControlStateNormal];
[backBtn addTarget:self action:@selector(handleBack:) forControlEvents:UIControlEventTouchUpInside];
backBtn.frame = CGRectMake(0, 0, 24, 24);
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:backBtn] ;
self.navigationItem.leftBarButtonItem = backButton;
}


//Handle the Back Button Event
- (void) handleBack:(id)sender
{
    // do your custom handler code here
    [self.navigationController popViewControllerAnimated:YES];
}

此外,通过这种方式,您无需每次都更改NavigationBar的标题。

以下是供您参考的后退按钮: enter image description here

答案 4 :(得分:0)

您可以在要设置选择的backButton标题的视图控制器的 viewWillAppear(animated:Bool)方法中使用以下代码:     self.navigationController?.navigationBar.topItem?.backBarButtonItem = UIBarButtonItem(title: "Back Title", style: .plain, target: nil, action: nil)