5

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

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

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

5 回答 5

19

根据UINavigationItem 类参考

“当此导航项位于堆栈中顶部项的正下方时,导航控制器会从此导航项派生导航栏的后退按钮。[...] 如果您想为后退按钮指定自定义图像或标题,您可以将自定义栏按钮项(带有您的自定义标题或图像)分配给此属性。"

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

self.navigationItem.title=@"Recent Books";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
                                   initWithTitle:@"Back"
                                   style:UIBarButtonItemStylePlain
                                   target:nil
                                   action:nil];
self.navigationItem.backBarButtonItem=backButton;
于 2013-04-05T08:39:31.320 回答
6

假设您正在推动您的视图控制器 A -> B

在 viewcontroller A 中尝试在viewDidLoad方法中添加此代码

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

所以你会在视图控制器 B 中看到你的“返回”按钮

于 2013-04-05T08:59:45.943 回答
2

以下应该可以解决您的问题

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

你也可以使用这个 Objective-C 语法

[[self.navigationController.navigationBar backItem] setTitle:@"back"];
于 2013-04-05T08:42:01.160 回答
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 的标题。

这是供您参考的后退按钮: 在此处输入图像描述

于 2013-04-05T09:46:46.140 回答
0

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

于 2018-10-09T12:25:23.283 回答