UINavigation栏的自定义后退button

我已经提到了相当多的线程( 如何更改导航栏上的“后退”button的名称 , NavigationController的UINavigationBar后退button和其他几个)定制后退button中的文本显示所需的string。 但是,他们不使用故事板。 所以很多都不适用。

为了给你一个背景,我通过故事板创build了我的视图( view1view2 ),并且我想使用view2上的后退button导航到view1 。 我如何使用IB来做到这一点?

另外,我也尝试设置self.navigationItem.backBarButtonItem.title@"Custom text"; ,但是这不起作用。

有人可以请build议如何更改view2上的Backbutton的文本? 谢谢!

我find了解决我的问题。 下面介绍的方法将允许您更改后退button的文本而不更改父视图控制器的标题。

  1. 打开故事板文件并点击链接连接两个viewControllers。
  2. 打开实用程序面板,然后单击属性检查器。
  3. 给故事板segue一个有意义的标识符。 (为了这个例子,我把它称为saveReturn。)按回车接受。
  4. 打开父视图控制器的.m文件并插入代码。

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"saveReturn"]) { self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Save & Return" style: UIBarButtonItemStyleBordered target:nil action:nil]; } `}

我知道这是一个古老的问题 – 但为了完整:

故事板的做法(我个人喜欢在故事板中尽可能地做):

在您想要更改后退button之前的视图(即您正在更改的后退button的目的地)中select导航栏,并在“属性”检查器中更改“后退button”字段的值(这也是你可以改变视图的名称) – 见下文。

在这里输入图像说明

这是故事板的解决scheme:

prepareForSegue ,将视图控制器的标题设置为适合后退button的简短标题:

 MyViewController *mvc = segue.destinationViewController; mvc.title = @"Docs"; 

要改回来,在viewWillAppear做相反的操作:

 self.title = @"Important Documents"; 

我不熟悉Storyboard。

但是,通常,诀窍是

  • 在从view1切换到view2之前,请根据需要在view2的后退button上设置view1的标题

    [ViewController1 setTitle:@“我想在view2的后退button中的文本”];

  • 当你切换回view1你不想要这个标题。 因此,在view1的viewcontroller的实现中,你可以重载:

    – (void)viewWillAppear:(BOOL)animated {[super viewWillAppear:animated]; [self setTitle:@“标题我实际上想在我的view1”]; }

这样,当您从view1切换到view2时,您将触发您希望显示在后退button上的标题。 当您从view2切换回view1时,您将使用view1“将出现”的事实!

你并没有指定view1是否是你的问题中的view2的前一个视图,但是如果这是你正在做的事情(在后退button中使用一个自定义标题),那么在storyboard中很容易做到。

如果在故事板中看不到导航栏,请在故事板中为视图1select视图控制器,然后在“属性”检查器中确保顶栏中已选定导航栏(而不是推断)

selectview1的导航栏,然后在属性检查器中,您有3个字段:标题,提示和后退button。 如果您将文本添加到“后退”button字段,则当您从view1导航到view2时,后退button将使用此文本,而不是view2后退button中的标题。