如何更改后退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.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]; 
 如果你想要后退button“Back”,将父视图控制器的标题设置为@"Back" 。 
这对我更好。 试试:
  self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil]; 
如果你正在使用故事板:
- 打开StoryBoard
- 在“文档大纲”窗口中,find要返回到的ViewController
- 点击该ViewController的Navigation Item
- 在“属性”资源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"