如何更改后退按钮上的文本

时间:2009-05-07 16:09:59

标签: ios iphone cocoa-touch uinavigationitem

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

我尝试了以下无效的方法:

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

感谢。

20 个答案:

答案 0 :(得分:167)

尝试

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

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

答案 1 :(得分:97)

一旦我找出应用它的控制器,Marc W的方法就很有效:重新命名的控制器,而不是顶部控制器。所以,如果这是导航堆栈:

(bottom)  ControllerA -> ControllerB  (top)

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

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

答案 2 :(得分:47)

您可以在故事板中执行此操作。找到要返回的视图控制器(具有长标题的视图控制器),选择它的导航项,然后打开属性检查器(Alt + Cmd + 4),插入自定义后退按钮标题。

enter image description here

答案 3 :(得分:40)

谢谢Marco ......帮助了我......

这就是我所做的。

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

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

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

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

答案 4 :(得分:12)

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

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

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

RootViewController.m viewDidLoad方法中的

self.title = @"Home";
SecondViewController.m viewDidLoad方法中的

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

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

答案 5 :(得分:10)

这项工作对我来说更好。试试:

 self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] 
initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];

答案 6 :(得分:9)

如果您使用的是故事板:

  1. 打开StoryBoard
  2. 在Document Outline窗口中找到您想要的ViewController 回到
  3. 单击该ViewController的导航项
  4. 在属性浏览器中将后退按钮值更改为自定义磁贴
  5. 就是这样,享受......

答案 7 :(得分:5)

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

NavigationItem.BackBarButtonItem = new UIBarButtonItem( "Back", UIBarButtonItemStyle.Plain, null);

答案 8 :(得分:3)

[self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc]
  initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]];

这对我有用。

答案 9 :(得分: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];

}

请注意,最后我们不需要在最新的iOS版本中加入autorelease

希望这有帮助!

答案 10 :(得分:1)

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

它对我有用。您可以用其他东西替换“后退”。

答案 11 :(得分:1)

如果你不想要一个头衔,这个对我有用了!

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

答案 12 :(得分:1)

self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];

答案 13 :(得分:0)

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

答案 14 :(得分: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"
}

答案 15 :(得分:0)

要更改后退按钮标题,请参阅以下代码

document.getElementById("gwd-ad").style.opacity="",
document.getElementById('loading').style.display = 'none'

答案 16 :(得分:0)

如果您不仅要更改“后退”按钮的文本并保持原始的左箭头形状,还要在用户单击“后退”按钮时执行某些操作,我建议您查看我的“{{3 }}”。

答案 17 :(得分: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";
}

答案 18 :(得分:0)

我终于知道为什么这些答案一开始对我不起作用。我在故事板中设置了标题。当我在代码上设置标题时。它有效!

self.navigationItem.title = @"Main Menu";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];

答案 19 :(得分:-1)

这对我有用:

self.navigationController.navigationBar.topItem.title = "Back"