如何删除所有导航栏后退button标题

当我推UIViewController ,它在新的UIViewController后退button中有一些标题,如果标题有很多文字,它在iPhone 4s中看起来不太好所以我想删除它。

如果我在prepareForSegue函数中添加一些代码,这将是一个麻烦。

有什么更好的方法来实现这个?

如果你想把后面的箭头代码放到AppDelegate文件中,进入didFinishLaunchingWithOptions方法。

For Objective-C

  [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault]; 

For Swift

 let BarButtonItemAppearance = UIBarButtonItem.appearance() BarButtonItemAppearance.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.clear], for: .normal) 

下面的另一个选项。

Objective C

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

Swift

 self.navigationItem.backBarButtonItem = UIBarButtonItem(title:"", style:.plain, target:nil, action:nil) 

所以可能是你的问题已经解决了。

快乐的编码。

我在AppDelegate文件中使用这行代码到didFinishLaunchingWithOptions方法来删除后退title

Swift 2.x

 let barAppearace = UIBarButtonItem.appearance() barAppearace.setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -60), forBarMetrics:UIBarMetrics.Default) 

Swift 3.x

 UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -60), for:UIBarMetrics.default) 

工作就像Swift 3上的魅力一样

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

你可以使用xcode 8和swift 3.0

 self.navigationController?.navigationBar.backItem?.title = " " 
 let barAppearace = UIBarButtonItem.appearance() barAppearace.setBackButtonTitlePositionAdjustment(UIOffsetMake(0, -60), for:UIBarMetrics.default) 

在swift 3.0中使用这行代码

我通常添加或更改UIViewController的viewDidLoad中的后退button。

像这样的东西应该工作:

 let leftButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: self, action: "closeView:") self.navigationItem.leftBarButtonItem = leftButton 

不要忘记改变和实现它被称为closures视图的function。

更容易,只需更改标题:

 self.navigationItem.leftBarButtonItem.title = "Back" 

从rordulu的回答中得到灵感,我最终创build了一个自定义的UINavigationController和UINavigation栏,它似乎处理这个棘手问题的所有情况。

1)用你自定义的UINavigationBar初始化新的UINavigationBar

 class CustomNavigationController: UINavigationController { convenience init() { self.init(navigationBarClass: CustomNavigationBar.self, toolbarClass: nil) } } 

2)将导航栏的backItem.title属性设置为一个空string,每次视图展现出来

 class CustomNavigationBar: UINavigationBar { override func layoutSubviews() { backItem?.title = "" super.layoutSubviews() } } 

现在,每当您使用此导航控制器和栏组合,它将永远不会有后退button文本! 🎉

注意:如果还使用故事板,这应该可以正常工作,只要确保将自定义导航栏组件放到视图中即可

你可以为所有需要这个行为的UIViewController和子类的viewDidLoad创build一个子类:

 override func viewDidLoad() { super.viewDidLoad() self.navigationItem.backBarButtonItem = UIBarButtonItem( title: "", style: .plain, target: nil, action: nil) } 

这样,你可以select你想要的行为控制器,而不需要重复代码。 我更喜欢我的控制器只是说“返回”,而不是以前的控制器的标题,所以我在这里设置了标题。

Swift 3:

 self.navigationItem.backBarButtonItem = UIBarButtonItem(title:"", style:.plain, target:nil, action:nil) 

只需要从您的其他ViewController所依赖的位置转到您的Parent ViewController

 override func viewWillDisappear(animated: Bool) { super.viewWillDisappear(true) navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil)} 

很简单。 在后退button的标题中放置一个空格并准备就绪。 请记住,它必须在以前的视图中,您要删除文本。

在这里输入图像说明

我不知道为什么,但我发现问题隐藏在iPhone加号button标题,但在设备没有加显示正确与

 leftBarButtonItem.title = "" 

所以我find了简单的方法。 在自动布局的NavigationViewController的NavigationBar中设置为淡色。 如果使用带有色调的图标或文本块,则可能会出现问题。 但在我的情况下,我不使用它的一切。

我不满意setBackButtonTitlePositionAdjustment解决scheme,所以这是一个快捷的方法来隐藏整个应用程序中的所有后退button文本:

  UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: barbuttonFont, NSForegroundColorAttributeName:UIColor.clearColor()], forState: UIControlState.Normal) UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: barbuttonFont, NSForegroundColorAttributeName:UIColor.clearColor()], forState: UIControlState.Highlighted) 

你将不得不从AppDelegatedidFinishLaunchingWithOptions函数中调用这些函数。

必须将外观设置为.Highlighted状态以避免用户点击后退button时显示文本。