90

默认情况下,后退按钮使用视图控制器的标题作为其上的文本。我可以在不更改视图控制器标题的情况下更改后退按钮上的文本吗?我需要这个,因为我有一个视图控制器,它的标题太长而无法显示,在这种情况下,我想只显示“返回”作为后退按钮的标题。

我尝试了以下不起作用:

self.navigationItem.leftBarButtonItem.title = @"Back";

谢谢。

4

20 回答 20

167

尝试

self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];

我通过查看Apple 的UINavigationItem文档中的backBarButtonItem文档发现了这一点。

于 2009-05-07T16:39:23.543 回答
97

Marc W 的方法在我确定将其应用于哪个控制器后效果很好:重新命名的控制器,而不是顶部的控制器。因此,如果这是导航堆栈:

(bottom)  ControllerA -> ControllerB  (top)

...并且您想在ControllerB 位于 top时显示的后退按钮中为 ControllerA 提供更短的标题,您将属性更改应用于ControllerA

所以它更多的是在上下文中self.title,而不是像其他左/右栏按钮设置器。

于 2009-05-10T00:19:44.783 回答
48

您可以在情节提要中进行。找到你想要返回的视图控制器(带有长标题的那个),选择它的导航项,然后打开属性检查器(Alt+Cmd+4),插入自定义的后退按钮标题。

在此处输入图像描述

于 2011-12-18T22:01:53.253 回答
40

谢谢马可...这对我有帮助...

这就是我所做的。

如果您使用 tableView 导航到不同的视图...输入代码:

self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];

在你的didSelectRowAtIndexPath方法中......第一个控制器......控制器A。

当您导航到控制器 B 时,按钮的标题将是“返回”。

于 2010-04-27T14:06:31.933 回答
12

后退按钮从父视图控制器的标题中提取其文本。

在父视图控制器(点击后退按钮时出现的视图控制器)中,将其自己的标题设置为后退按钮上所需的文本。

例如,假设我们有一RootViewController堂课。当我们在其表格视图中单击一个单元格时,我们推送一个SecondViewController. 我们希望实例的后退按钮显示为SecondViewController“Home”。

RootViewController.mviewDidLoad的方法中:

self.title = @"Home";

SecondViewController.mviewDidLoad的方法中:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];    

如果您希望您的后退按钮显示“后退”,请将父视图控制器的标题设置为@"Back"

于 2010-07-08T05:54:03.437 回答
10

这对我来说更好。尝试 :

 self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] 
initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
于 2013-06-20T13:10:51.203 回答
9

如果您使用情节提要:

  1. 打开故事板
  2. 在 Document Outline 窗口中找到要返回到的 ViewController
  3. 单击该 ViewController 的导航项
  4. 在属性资源管理器中,将返回按钮值更改为您的自定义磁贴

就是这样,享受...

于 2014-03-10T15:36:08.343 回答
5

在 MonoTouch 中,以下工作(在父控制器的 ViewDidLoad 中):

NavigationItem.BackBarButtonItem = new UIBarButtonItem( "Back", UIBarButtonItemStyle.Plain, null);
于 2011-10-08T09:07:24.677 回答
3
[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc]
  initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]];

这对我有用。

于 2012-08-06T11:09:46.183 回答
3

在您的父视图控制器中,在视图加载时设置后退按钮:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Do any additional setup after loading the view.
    self.navigationItem.backBarButtonItem = 
       [[UIBarButtonItem alloc] initWithTitle:@"title" 
                                        style:UIBarButtonItemStylePlain 
                                       target:nil 
                                       action:nil];

}

请注意,我们不需要autorelease在最后包含最新的 iOS 版本。

希望这可以帮助!

于 2013-10-05T21:05:26.010 回答
1

[self.navigationController.navigationBar.backItem setTitle:@"back"];

这个对我有用。您可以将“返回”替换为其他内容。

于 2013-03-15T07:20:27.127 回答
1

如果您不想拥有头衔,这对我有用!

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStylePlain target:nil action:nil];
于 2013-07-01T19:08:20.393 回答
1
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
于 2014-06-10T07:48:19.643 回答
0

我终于知道为什么这些答案起初对我不起作用。我在情节提要中设置了标题。当我在代码上设置标题时。有用!

self.navigationItem.title = @"Main Menu";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];
于 2013-07-03T17:22:23.077 回答
0

我的解决方案是在视图控制器被推送到导航堆栈时设置标题,并在推送 vc 关闭之前使用委托方法重置它:

因此,当我推送另一个视图控制器时,我将标题更改放在调用视图控制器中,例如:

self.pushedVC = [self.storyboard instantiateViewControllerWithIdentifier:@"pushedVCIdentifier"];
self.pushedVC.delegate = self;   
[self.navigationController pushViewController:self.pushedVC animated:YES];
self.title = @"Back";

在委托回调函数中(我在 viewWillDissapear 中调用):

-(void)pushedVCWillClose:(PushedVC *)sender
{
    self.title = @"Previous Title";
}
于 2013-08-30T16:15:37.007 回答
0

如果您不仅要更改后退按钮的文本并保持原来的左箭头形状,还要在用户单击后退按钮时做一些事情,我建议您看看我的“ CustomNavigationController ”。

于 2013-12-31T04:59:09.533 回答
0

要更改返回按钮标题,请参阅下面的代码

InformationVC *infoController=[[InformationVC alloc]init];[self.navigationController infoController animated:YES];

//Below code changed back button title on InformationVC page.
UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithTitle:@"Information" style: UIBarButtonItemStylePlain target: nil action: nil];
self.navigationItem.backBarButtonItem = backBarButton;`enter code here`
于 2016-03-31T08:58:54.977 回答
0

//可以通过在上一个视图控制器中设置标题来实现,如下图

override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        //Set Title for this view
        self.navigationItem.title = "My Title"

}

override func viewWillDisappear(animated: Bool) {
        super.viewWillAppear(animated)
        //Set Title for back button in next view 
        self.navigationItem.title = "Back"
}
于 2016-09-10T19:51:13.543 回答
0

在 Swift5 中,无法编辑 backBarButtom。因此,我们需要先隐藏 backBarButtom,然后使用自定义的 leftbarButtom 替换 backBarButtom。这是详细的解决方案:https ://stackoverflow.com/a/63868300/13939003

于 2020-09-13T09:35:32.130 回答
-1

这对我有用:

self.navigationController.navigationBar.topItem.title = "Back"
于 2017-07-27T07:53:46.503 回答