如何设置UINavigationBar上返回按钮的文本?

43

可能是重复问题:
如何更改导航栏上“返回”按钮的标题

情况:
我有一个UIViewController由导航控制器管理。 我可以通过调用self.title = @"title"来设置覆盖UIViewController的导航栏的标题。但是,我也想能够设置导航栏的返回按钮文本,以便适应不同语言等。

问题:
我不知道如何设置返回按钮的文本。

问题解决:
如何在UINavigation bar中设置返回按钮(编程方式而非IB)?


好问题。可能没有记录的方法来做到这一点(我真的不知道),但如果将其更改为不是前一个项目的标题或单词“返回”之外的任何内容,我会感到惊讶,并且如果违反了HIG的规定,很有可能这种自定义会导致应用被拒绝。 /个人意见。 - Justin Searls
3
建议将您的“接受”设置为Boon的答案,该答案是正确的。Matt的答案不是一个好的解决方案(抱歉,Matt! :) - Olie
更改背标签并不违反HIG,只要它有意义即可。 - Peter Johnson
2个回答

148

使用setTitle的方法——虽然看起来可行,但是是不正确的。仔细观察,你会注意到在通过pushViewController将新视图动画显示时,导航项更改为新标题。必须在viewWillAppear中恢复您的标题,这表明它的hack性质很低劣。

正确的方法是在pushViewController之前执行以下操作:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] 
                                initWithTitle: @"返回按钮文本" 
                                style: UIBarButtonItemStyleBordered
                                target: nil action: nil];
[self.navigationItem setBackBarButtonItem: backButton]; [backButton release];

8
很遗憾,在 prepareForSegue:sender: 回调函数中无法使用。对于故事板,我不确定可接受的解决方案是什么。 - wcochran
1
我已经成功在 prepareForSegue:sender: 回调中运行了这段代码。如果你正在使用 ARC,请删除 [backButton release]; - dnorcott
9
这里有一件值得强调的事情:你在当前视图控制器上设置返回按钮,在下一个视图控制器中它就会出现...这对任何人都可能有所帮助,对我很有用。 - Zsolt
4
@KieranSenior在iOS7上无法工作。 - DarkLeafyGreen
1
在iOS 8上进行了检查,但它没有起作用。更改前一个视图控制器的标题是唯一有效的方法。 - José Manuel Sánchez
显示剩余4条评论

12

根据苹果文档,将视图控制器的标题设置为返回按钮应显示的内容的最佳方法也是最简单的方法:

示例:

如果viewController1viewController2下面(并且viewController2上的返回按钮将返回到viewController1)。

viewController1.title = @"something awesome";

viewController2返回按钮将显示"一些很棒的东西"


2
如果您在导航堆栈中的视图控制器中添加了标题,该标题将显示为返回按钮的标题。 “Back”是默认文本。设置完标题后,您无需删除此标题。因此,这是正确的答案。 - Mark

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接