自定义导航栏的后退按钮

时间:2012-10-13 20:03:31

标签: iphone ios xcode

我已经提到了很多线程(How do I change the title of the "back" button on a Navigation BarNavigationController UINavigationBar Back Button和其他一些线程)来自定义后退按钮中的文本以显示所需的字符串。但是,他们不使用故事板。其中很多都不适用。

为了给你一个背景资料,我通过情节提要创建了我的观点(view1view2),我想使用view2上的后退按钮导航到{ {1}}。我怎么能用IB做到这一点?

或者,我也尝试将view1设置为self.navigationItem.backBarButtonItem.title,但这不起作用。

有人可以建议我如何更改@"Custom text";上的Back按钮的文字?谢谢!

5 个答案:

答案 0 :(得分:4)

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

  1. 打开storyboard文件,然后单击链接连接两个viewControllers。
  2. 打开Utilities面板,然后单击Attributes inspector。
  3. 为storyboard segue提供有意义的标识符。 (为了这个例子,我称之为saveReturn。)按Enter键接受。
  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 :(得分:3)

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

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

在视图之前中,您想要更改后退按钮的那个(即您要更改的后退按钮的目标)选择导航栏,然后在属性检查器中更改值“后退按钮”字段(这也是您可以更改视图名称的位置) - 请参见下文。

enter image description here

答案 2 :(得分:2)

这是故事板解决方案:

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

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

要更改它,请在viewWillAppear

中执行相反操作
self.title = @"Important Documents";

答案 3 :(得分:1)

我对故事板不熟悉。

然而,通常,诀窍是

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

    [ViewController1 setTitle:@“我想在view2的后退按钮中找到的文字”];

  • 当您切换回view1时,您不需要此标题。因此,在view1的viewcontroller的实现中,您重写:

    - (void)viewWillAppear:(BOOL)animated {     [super viewWillAppear:animated];     [self setTitle:@“我真实想要的标题1”]; }

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

答案 4 :(得分:0)

您没有在问题中指定view1是否是view2的上一个视图,但如果您正在尝试这样做(在后退按钮中使用自定义标题),那么在故事板中进行操作非常容易。

如果在故事板中没有看到导航栏,请在故事板中为view1选择视图控制器,在“属性”检查器中,确保顶栏选择了导航栏(而不是“推断”)

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

相关问题