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

Posted

技术标签:

【中文标题】导航栏标题和后退按钮名称相同吗?【英文标题】:Navigationbar title and back button name are same? 【发布时间】:2013-04-05 08:36:32 【问题描述】:

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

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

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

【问题讨论】:

请看我的回答***.com/questions/9871578/… 那个答案对我不起作用 【参考方案1】:

根据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;

【讨论】:

我在第一个视图中自定义了两个 BarButton,左侧是“信息”,右侧是“设置”。然而,我必须在第一个视图中为 BackButton 设置一个名称。在我的组件树中现在有三个 BarButton,但是当我运行应用程序时一切正常。根本没有意义。【参考方案2】:

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

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

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

因此您将在视图控制器 B 中看到“返回”按钮

【讨论】:

【参考方案3】:

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

-(void)viewDidAppear:(BOOL)animated

    self.navigationController.navigationBar.backItem.title = @"back";

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

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

【讨论】:

【参考方案4】:

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

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

- (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 的标题。

这是供您参考的后退按钮:

【讨论】:

【参考方案5】:

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

【讨论】:

以上是关于导航栏标题和后退按钮名称相同吗?的主要内容,如果未能解决你的问题,请参考以下文章

IOS应用导航栏后退按钮

如何设置导航栏的后退项

更改导航栏后退按钮的粗细

导航栏上的后退按钮故障/错误

如何在 uiviewcontroller 的导航栏中添加后退按钮?

单击导航返回按钮,然后导航栏重叠相同的视图