2012-10-13 70 views
0

我已经参考了相当多的线程(How do I change the title of the "back" button on a Navigation Bar,NavigationController UINavigationBar Back Button和其他几个)来定制后退按钮中的文本以显示所需的字符串。但是,他们不使用故事板。其中很多都不适用。UINavigation bar的自定义后退按钮

为了给你一个背景,我已经通过故事板创建自己的看法(view1view2),我想用在view2后退按钮导航到view1。我如何使用IB来做到这一点?

或者,我也尝试将self.navigationItem.backBarButtonItem.title设置为@"Custom text";,但这不起作用。

有人可以请建议如何更改Back按钮view2上的文字?谢谢!

+0

我相当确定您必须更改以前的视图的标题。 – Kevin

+0

我明白这一点。当我更改'view1'上的标题时,'view2'上的后退按钮显示'view1'的标题。但我不希望标题出现在'view1'上。 –

+0

当控制器弹出时将其改回。 – Kevin

回答

4

我找到了我的问题的解决方案。下面介绍的方法可以让您更改后退按钮的文本而不更改父视图控制器的标题。

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

1

我不熟悉故事板。

但是,通常的伎俩是

  • 权从厂景到view2的切换之前,设置你的厂景的称号,只要你想在你视图2的后退按钮

    [ViewController1的setTitle :@“我想在view2的后退按钮中输入的文本”];

  • 当你切换回view1你不想要这个标题。因此,在实现view1的视图控制器时,您可以覆盖:

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

这样,当你从厂景切换到视图2,你触发你希望出现在您的后退按钮标题。当您从view2切换回view1时,您使用view1“将出现”的事实!

2

这里是故事板的解决方案:

prepareForSegue设置视图控制器的标题为可以满足到后退按钮的短标题:

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

要改变回来,做反向中viewWillAppear

self.title = @"Important Documents"; 
0

你没有指定是否厂景是你的问题视图2的以前的观点,但如果这是您要什么做(在后退按钮中使用自定义标题),那么在故事板内就很容易做到。

如果你没有看到你的故事板的导航栏中,选择您的视图控制器在故事板视图1,并在属性检查器中,确保最上面一栏有一个导航栏选择(而不是推断)

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

+0

在发布问题之前,我已经尝试了您的技巧。它只是不起作用。如果想要定制后退按钮而不更改父视图控制器的标题,最好的方法是在父VC'm实现文件中实现'prepareForSegue'方法。 –

3

我知道这是一个老问题 - 但对于完整性:

做它的故事板的方式(我个人喜欢做的尽可能在故事板):前

在视图带有后退按钮的人员(即您要更改的后退按钮的目标)选择导航栏,然后在“属性”检查器中更改“后退按钮”字段的值(这也是您可以更改视图名称) - 见下文。

enter image description here