如何更改后退button上的文本

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

我尝试了以下哪些方法无效:

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

谢谢。

尝试

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

我发现通过查看苹果的文档中的backBarButtonItem文档为UINavigationController 。

马克·W的方法工作很好,一旦我找出哪个控制器应用它:重新命名,而不是顶部的那个。 所以如果这是导航堆栈:

 (bottom) ControllerA -> ControllerB (top) 

…并且您想要在ControllerB处于最前面时显示的后退button中给出一个较短的ControllerA标题,则将属性更改应用于ControllerA

所以更多的是在self.title的背景下,不像其他的左/右键设置器。

你可以在故事板中做到这一点。 find你想要回到的视图控制器(长标题),select它的导航项目,并打开属性检查器(Alt + Cmd + 4),插入自定义后退button标题。

在这里输入图像说明

感谢Marco,帮助我…

这是我做的。

如果你正在使用tableView导航到不同的视图…把代码:

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

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

当您导航到控制器B时,button将具有“返回”标题。

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

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

例如,假设我们有一个RootViewController类。 当我们在表格视图中单击一个单元格时,我们推送一个SecondViewController的实例。 我们希望SecondViewController实例的后退button读取“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]; 

如果你想要后退button“Back”,将父视图控制器的标题设置为@"Back"

这对我更好。 试试:

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

如果你正在使用故事板:

  1. 打开StoryBoard
  2. 在“文档大纲”窗口中,find要返回到的ViewController
  3. 点击该ViewController的Navigation Item
  4. 在“属性”资源pipe理器中,将“后退button”值更改为自定义图块

就是这样,享受…

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

 NavigationItem.BackBarButtonItem = new UIBarButtonItem( "Back", UIBarButtonItemStyle.Plain, null); 
 [self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil]]; 

这对我有效。

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

 - (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

希望这可以帮助!

我也有同样的问题。 不幸的是,很多关于SO的解决scheme都不适合我,所以我自己开发了一个解决scheme。 请参阅我的解决scheme: https : //stackoverflow.com/a/12906437/1560345 。 希望它也能帮助别人。 🙂

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

这个对我有用。 你可以用别的东西replace“后退”。

如果你不想拥有一个标题,这个为我工作!

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

我终于知道为什么这些答案一开始并不适合我。 我在故事板中设置了标题。 当我在代码上设置标题。 有用!

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

我的解决scheme是设置标题时,视图控制器被推到导航堆栈,并重新使用委托方法之前推vcclosures:

所以我把标题改变在调用视图控制器,当我推其他视图控制器如:

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

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

 -(void)pushedVCWillClose:(PushedVC *)sender { self.title = @"Previous Title"; } 

如果您不仅要更改“后退”button的文本并保持原始的左箭头形状,而且还要在用户单击“后退”button时执行某些操作,则build议您查看“ CustomNavigationController ”。

你可以使用这个(在viewController中显示后退button)

 UINavigationController *nvc = self.navigationController; NSInteger currentViewControllerIndex = [nvc.viewControllers indexOfObject:self]; if (currentViewControllerIndex > 0) { UIViewController *previousViewController = self.navigationController.viewControllers[currentViewControllerIndex - 1]; previousViewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:backButtonTitle style:UIBarButtonItemStylePlain target:nil action:nil]; } 

在迅速

  if let currentViewControllerIndex = self.navigationController?.viewControllers.indexOf(self) where currentViewControllerIndex > 0, let previousViewController = self.navigationController?.viewControllers[currentViewControllerIndex - 1] { previousViewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: backButtonTitle, style: .Plain, target: nil, action: nil) } 
 For to change back button title,refer below code 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` 

//你可以通过在前面的视图控制器中设置标题来实现这一点,如下所示

 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" } 

这对我工作:

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