我有一个UIViewController
,我正在从我的第一个视图控制器导航到第二个视图控制器,我想更改navigationcontroller
上显示的按钮的名称以便返回....
SecondViewController *secondController = [[SecondViewController alloc]
initWithNibName:nil
bundle:NULL];
[self.navigationController pushViewController:secondController animated:YES];
现在在第二个viewcontroller
我希望更改navigationController
中按钮的名称。
答案 0 :(得分:182)
如果您希望以编程方式执行此操作,可以这样做:
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"Custom"
style:UIBarButtonItemStyleBordered
target:nil
action:nil];
[self.navigationItem setBackBarButtonItem:backItem];
let backItem = UIBarButtonItem(title: "Custom", style: .Bordered, target: nil, action: nil)
navigationItem.backBarButtonItem = backItem
但是,如果您更喜欢使用Interface Builder,只需选择要为其设置后退按钮的UINavigationItem,然后导航到属性检查器以更改后退按钮的标题。
注意:重要的是要记住,您必须在视图控制器上配置此功能,您将在点击后退按钮时返回,而不是当前可见的视图控制器。
答案 1 :(得分:42)
在Interface Builder或Storyboarding中有一种简单的方法。在父视图控制器中,只需将导航项的属性“后退按钮”设置为您想要的任何标题。这是一个例子:
Villian的Tavern View将“Back”作为Back Button Title,就像我们在父级导航控制器的属性检查器中设置的那样(Best Bars)。
答案 2 :(得分:34)
在viewWillAppear中写这个
self.navigationItem.title = @"List View";
在ViewWilldisapper中写下这个
self.navigationItem.title = @"Back";
它没有故事板。
答案 3 :(得分:4)
斯威夫特3:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let backItem = UIBarButtonItem()
backItem.title = "Back"
navigationItem.backBarButtonItem = backItem // This will show in the next view controller being pushed
}
注意:后退按钮属于上一个视图控制器,而不是当前在屏幕上显示的控制器。 要修改后退按钮,您应该在推送之前更新它,在启动segue的视图控制器上:
答案 4 :(得分:4)
在我的情况下,它只能在主线程上运行代码,如下所示:
dispatch_async(dispatch_get_main_queue(), ^(void) {
self.navigationController.navigationBar.backItem.title = @"Custom Title";
});
答案 5 :(得分:2)
在 Swift 中,我发现解决方案很简单,
假设我在 ViewControllerA 并转到 ViewControllerB ,如果我想更改 ViewControllerB 上显示的后退按钮的名称,我会在 ViewControllerA ,
中执行此操作self.title = "BackButtonTitle"
就是这样。
注意: - 这会更改 ViewControllerA 的标题
答案 6 :(得分:1)
如果使用Storyboard引用,View Controller可能不会在Interface Builder上显示导航项。
手动拖动导航栏无效,您需要拖动导航项
然后,您就可以设置其后退按钮的标题。这也是您设置视图标题的地方。
引用Mick MacCallum:
注意:重要的是要记住,您必须在视图控制器上配置此功能,您将在点击后退按钮时返回,而不是当前可见的视图控制器。
答案 7 :(得分:1)
尝试以下代码:
[self.navigationItem setValue:@[@"customTitle",@""] forKey:@"abbreviatedBackButtonTitles"];
答案 8 :(得分:1)
您可以使用titleView
navigationItem
来实现此目的
Swift 3回答
•为UINavigationItem
创建一个扩展名为
extension UINavigationItem {
func customTitle(title: String) {
let titleLabel = UILabel()
titleLabel.text = title
titleLabel.textColor = UIColor.white
titleLabel.textAlignment = .center
titleLabel.sizeToFit()
titleView = titleLabel
}
}
•在您的控制器viewDidLoad
中执行以下操作
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
title = "Text For Back Button"
navigationItem.customTitle(title: "Title for your view controller")
}
答案 9 :(得分:1)
实际上,您可以更改后退按钮的标题:
self.navigationItem.backBarButtonItem.title = @"NewName";
答案 10 :(得分:1)
非常重要的是,在视图控制器中,“模拟指标”选项未被选为“推断”。
我试过“无”,一切都没错!
答案 11 :(得分:0)
有两种方法可以做到这一点。
第一种方法是程序代码:
Yakimenko Aleksey的回答是最简单的方法, 这确实有效(在Xcode 8 + iOS 10上测试)
Swift3:
self.navigationItem.backBarButtonItem?.title = "Your customized back title"
注意:您应该在源视图控制器中调用上面的代码,而不是目标视图控制器。
第二种方法是通过Main.strings
文件使用故事板本地化,
"nnnnnnn.title" = "localized string";
nnnnnnn表示源视图控制器(而不是目标视图控制器)中BackBarButtonItem的对象ID。
你需要设置"返回"导航栏项的属性,它将自动创建一个BarButtonItem,找到它的对象id。
抱歉,我无法上传截图。
答案 12 :(得分:0)
如果您使用Storyboard,有一种简单的方法可以做到这一点(它对我来说很好)。
答案 13 :(得分:0)
我有一个带有许多导航控制器的相当复杂的故事板,而我的客户希望所有的后退按钮都能说出"返回"
我在Interface Builder中进行了操作并将" Back"进入每个UINavigationItem的后退按钮字段。
我没有为每一个场景变化工作!
问题是不故事板中的每个视图控制器都有一个UINavigationItem。
我通过将一个新的UINavigationItem拖到没有一个UIViewController的每个UIViewController上,并将Back按钮字段的 all 设置为" Back"
来解决这个问题。注意没有自动给出自己的UINavigationItem的控制器。
答案 14 :(得分:0)
Swift 4
在 UIViewController 中,设置:
let backButton = UIBarButtonItem()
backButton.title = "[Your title here]"
self.navigationItem.backBarButtonItem = backButton
答案 15 :(得分:0)
我在ViewController1上,然后转到ViewController2,如果我想更改在ViewController2上显示的后退按钮的名称,我将在ViewController2中进行此操作。
快速5
self.navigationController?.navigationBar.topItem?.title = "BackButtonTitle"
Objective-C
self.navigationController.navigationBar.topItem.title = @"BackButtonTitle";
答案 16 :(得分:0)
在Xcode 12中,UINavigationItem具有backButtonTitle属性
var backButtonTitle: String? { get set }