0

我在自定义后退按钮中的文本以显示所需的字符串时提到了很多线程(如何更改导航栏上的“后退”按钮的标题NavigationController UINavigationBar 后退按钮和其他几个)。但是,他们不使用情节提要。很多都不适用。

为了给你一个背景,我通过故事板创建了我的视图(view1view2),我想使用一个后退按钮view2导航到view1。我怎样才能使用 IB 做到这一点?

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

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

4

5 回答 5

4

我找到了我的问题的解决方案。下面描述的方法将让您更改后退按钮的文本,而无需更改父视图控制器的标题。

  1. 打开故事板文件并单击连接两个视图控制器的链接。
  2. 打开实用程序面板并单击属性检查器。
  3. 给 storyboard 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]; } `}

于 2012-10-16T01:46:39.663 回答
3

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

Storyboard 的实现方式(我个人喜欢在 Storyboard 中尽可能多地做):

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

在此处输入图像描述

于 2013-08-18T17:39:03.543 回答
2

这是故事板解决方案:

将视图控制器的标题设置为prepareForSegue适合后退按钮的短标题:

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

要将其改回,请执行以下操作viewWillAppear

self.title = @"Important Documents";
于 2012-10-13T23:06:40.467 回答
1

我对故事板不熟悉。

然而,通常,诀窍是

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

    [ViewController1 setTitle:@"view2的后退按钮我要的文字"];

  • 当您切换回 view1 时,您不需要此标题。因此,在 view1 的视图控制器的实现中,您覆盖:

    -(void) viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self setTitle:@"view1中我真正想要的标题"]; }

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

于 2012-10-13T22:09:17.747 回答
0

您没有在问题中指定 view1 是否是 view2 的前一个视图,但如果这是您想要做的(在后退按钮中使用自定义标题),那么在情节提要中很容易做到。

如果您在情节提要中看不到导航栏,请在情节提要中为 view1 选择视图控制器,并在属性检查器中,确保顶部栏选择了导航栏(而不是推断)

选择 view1 的导航栏,然后在 Attributes Inspector 中,您有 3 个字段:Title、Prompt 和 Back Button。如果将文本添加到后退按钮字段,当您从 view1 导航到 view2 时,后退按钮将使用此文本而不是 view2 的后退按钮中的标题。

于 2012-10-16T06:57:36.830 回答