默认情况下,后退按钮使用ViewController的标题作为文本。是否可以在不更改视图控制器标题的情况下更改后退按钮上的文本?我需要这样做是因为我有一个视图控制器,该标题的标题太长而无法显示,在这种情况下,我只想显示“ Back”作为后退按钮的标题。
我尝试了以下无效的方法:
self.navigationItem.leftBarButtonItem.title = @"Back";
谢谢。
默认情况下,后退按钮使用ViewController的标题作为文本。是否可以在不更改视图控制器标题的情况下更改后退按钮上的文本?我需要这样做是因为我有一个视图控制器,该标题的标题太长而无法显示,在这种情况下,我只想显示“ Back”作为后退按钮的标题。
我尝试了以下无效的方法:
self.navigationItem.leftBarButtonItem.title = @"Back";
谢谢。
Answers:
尝试
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
通过查看Apple的UINavigationItem文档中的backBarButtonItem文档,我发现了这一点。
一旦我弄清楚了将哪个控制器应用于该控制器,Marc W的方法就可以很好地工作:重新命名的控制器,而不是顶部的控制器。因此,如果这是导航堆栈:
(bottom) ControllerA -> ControllerB (top)
...并且您想在ControllerB在顶部时显示的后退按钮中为ControllerA赋予一个较短的标题,请将属性更改应用到ControllerA。
因此,它更多地是在的上下文中self.title
,与其他左/右栏按钮设置器不同。
您可以在情节提要中进行操作。找到要返回的视图控制器(标题较长的视图控制器),选择其导航项,然后打开“属性”检查器(Alt + Cmd + 4),插入自定义“后退按钮”标题。
谢谢马可...这帮助了我...
这是我所做的。
如果您使用tableView导航到不同的视图,请输入以下代码:
self.navigationItem.backBarButtonItem = [[[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil] autorelease];
在您的didSelectRowAtIndexPath
方法中...第一个控制器...控制器A。
当您导航到控制器B时,该按钮的标题为“返回”。
后退按钮从父视图控制器的标题中拉出其文本。
在父视图控制器(点击后退按钮时显示的视图控制器)中,将其自己的标题设置为后退按钮上的所需文本。
例如,假设我们有一个RootViewController
类。在表格视图中单击某个单元格时,我们将推送一个实例SecondViewController
。我们想要的后退按钮SecondViewController
实例 “ Home”。
在RootViewController.m的viewDidLoad
方法中:
self.title = @"Home";
在SecondViewController.mviewDidLoad
方法中:
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
如果您希望后退按钮显示为“后退”,请将父视图控制器的标题设置为@"Back"
;。
这对我来说更好。尝试:
self.navigationController.navigationBar.topItem.backBarButtonItem = [[UIBarButtonItem alloc]
initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:nil action:nil];
在视图加载时,在父视图控制器中设置后退按钮:
- (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版本。
希望这可以帮助!
[self.navigationController.navigationBar.backItem setTitle:@"back"];
这个对我有用。您可以将“ back”替换为其他内容。
我终于知道为什么这些答案一开始对我不起作用。我在情节提要中设置标题。当我在代码上设置标题时。有用!
self.navigationItem.title = @"Main Menu";
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@" " style:UIBarButtonItemStyleBordered target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];
我的解决方案是在将视图控制器推送到导航堆栈时设置标题,并在推送的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";
}
如果您不仅要更改“后退”按钮的文本并保持原始的左箭头形状,而且还希望在用户单击“后退”按钮时执行某些操作,则建议您浏览一下“ CustomNavigationController ”。
//您可以通过在上一个视图控制器中设置标题来实现此目的,如下所示
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"
}
有关更改后退按钮标题的信息,请参见以下代码
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`