UINavigationBar隐藏返回button文本
如何隐藏UINavigation控制器的后退button文本? 我只会有“<”而不是“<Back”
 在界面生成器中 ,您可以select前一个控制器的导航项,并将Back Buttonstring更改为您希望后退button显示为的forms。  如果你想把它留空白,例如,只需放一个空格。 
你也可以用这行代码来改变它 :
 [self.navigationItem.backBarButtonItem setTitle:@"Title here"]; 
或者在Swift中 :
 self.navigationItem.backBarButtonItem?.title = "" 
你也可以通过故事板做到这一点。 在前一个控制器的导航项的属性检查器中,您可以在后退button字段中设置“”。 参考下面的图片。 将“您的标题在这里”replace为“”。 通过这样做,你会达到预期的结果。 你不需要再混淆“标题”了。
以编程方式,你可以使用
 [self.navigationItem.backBarButtonItem setTitle:@" "]; 
自我指的是推动你想要的视图控制器的控制器。

示例之前,导航栏之后
  之前 
  后 
你可以像这样实现UINavigationControllerDelegate:
 func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) { let item = UIBarButtonItem(title: " ", style: .Plain, target: nil, action: nil) viewController.navigationItem.backBarButtonItem = item } 
backBarButtonItem默认为零,它影响下一个推动的控制器,所以你只需要为所有控制器设置它
 解决这个问题的另一个解决scheme是在你有很多视图控制器的情况下,使用UIAppearance代理来有效地隐藏后退button标题文本,如下所示: 
 UIBarButtonItem *navBarButtonAppearance = [UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil]; [navBarButtonAppearance setTitleTextAttributes:@{ NSFontAttributeName: [UIFont systemFontOfSize:0.1], NSForegroundColorAttributeName: [UIColor clearColor] } forState:UIControlStateNormal]; 
 此解决scheme将文本呈现为一个小小的清晰点,类似于手动将后退button标题设置为@" " ,除了它会影响所有导航栏button。 
我不build议这是一个通用的解决scheme,因为它会影响所有的导航栏button。 它翻转范例,以便您select何时显示button标题,而不是何时隐藏标题。
 要select何时显示标题,可以根据需要手动恢复标题文本属性,或创buildUIBarButtonItem的专用子类(可能与另一个UIAppearance代理)执行相同操作。 
如果您有一个应用程序需要隐藏大多数后退button标题,并且只有less数(或没有)导航button是带有标题的系统button,则可能适合您!
(注意:为了确保长标题不会导致中心导航栏标题移动,即使文本颜色清晰也需要更改字体大小)
在viewDidLoad或loadView中添加下面的代码
 self.navigationController.navigationBar.topItem.title = @""; 
我使用iOS 9在iPhone和iPad上testing了它
 将后退button的标题设置为@""或nil将不起作用。 您需要将整个button设置为空(没有标题或图像): 
Objective-C的
 [self.navigationItem setBackBarButtonItem:[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]]; 
迅速
 self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) 
 这应该在导航堆栈中视图控制器顶部的视图控制器上完成(例如,通过pushViewController方法导航到VC的位置) 
您可以添加这个Objective-C类别,使得由导航控制器创build的所有“返回”button都没有文本。 我只是把它添加到我的AppDelegate.m文件。
 @implementation UINavigationItem (Customization) /** Removes text from all default back buttons so only the arrow or custom image shows up. */ -(UIBarButtonItem *)backBarButtonItem { return [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]; } @end 
PS – (我不知道如何使这个扩展工作与斯威夫特,这是有奇怪的错误。编辑欢迎添加一个Swift版本)
目前的答案是行不通的。 我想完全删除标题 ,但“回”的文字并没有消失。
返回到前一个视图控制器并设置其标题属性:
 self.title = @" "; 
只有在以前的视图控制器没有标题时才起作用
以编程方式从后台删除文本,使用下面的代码这将工作formsxcode7及以上。
self.navigationController.navigationBar.topItem.title = @“”;
要么
在故事板中手动select视图控制器上的导航栏,然后在后退button文本中input“”。
这将工作。 谢谢
将前一个VC的标题设置为带空格的string。 和后退button的标题将被replace为单个空格string。
 Self.title = " " 
在后面按下再次在viewWillAppear重置标题为原来的。
唯一没有副作用的是创build一个自定义后退button。 只要您不提供自定义操作,即使滑动手势也能正常工作。
 extension UIViewController { func setupBackButton() { let customBackButton = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil) navigationItem.backBarButtonItem = customBackButton }} 
不幸的是,如果你想要所有的后面的button没有任何标题,你需要在所有的视图控制器中设置这个自定义后退button:/
 override func viewDidLoad() { super.viewDidLoad() setupBackButton() } 
将空格设置为标题而不是空string非常重要。
在Swift3中,
如果你设置全局设置
 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // .. let BarButtonItemAppearance = UIBarButtonItem.appearance() BarButtonItemAppearance.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .normal) BarButtonItemAppearance.setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.clear], for: .highlighted) // ... } 
我在这篇文章中尝试了一切。 唯一的工作解决scheme是@ VoidLess的
这是相同的答案,但更完整
 class CustomNavigationController: UINavigationController { override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.delegate = self } } // MARK:UINavigationControllerDelegate extension CustomNavigationController { func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) { viewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: " ", style: .plain, target: nil, action: nil) } } 
 在iOS 11中,我们发现将UIBarButtonItem外观的文本字体/颜色设置为一个非常小的值或清除颜色会导致其他栏项消失(系统不再承认UIBarButton项的类,它会将其转换为_UIModernBarButton )。 在交互式popup窗口中,将背景文字的偏移设置为离屏也会导致闪烁。 
 所以我们swizzled addSubView : 
 + (void)load { if (@available(iOS 11, *)) { [NSClassFromString(@"_UIBackButtonContainerView") jr_swizzleMethod:@selector(addSubview:) withMethod:@selector(MyiOS11BackButtonNoTextTrick_addSubview:) error:nil]; } } - (void)MyiOS11BackButtonNoTextTrick_addSubview:(UIView *)view { view.alpha = 0; if ([view isKindOfClass:[UIButton class]]) { UIButton *button = (id)view; [button setTitle:@" " forState:UIControlStateNormal]; } [self MyiOS11BackButtonNoTextTrick_addSubview:view]; } 
 使用覆盖pushViewController的自定义NavigationController 
 class NavigationController: UINavigationController { override func pushViewController(_ viewController: UIViewController, animated: Bool) { viewController.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) super.pushViewController(viewController, animated: animated) } } 
Swift 3.1你可以通过实现UINavigationController的委托方法来做到这一点。
`func navigationController(_ navigationController:UINavigationController,willShow viewController:UIViewController,animated:Bool){
/ **它只会隐藏标题后退button,**我们仍然会得到后退箭头图像和默认function。 * / let item = UIBarButtonItem(title:“”,style:.plain,target:nil,action:nil)viewController.navigationItem.backBarButtonItem = item}
 这是我的决议iOS11,我改变UIBarButtonItem在applicationDidFinishLaunchingWithOptions: UIBarButtonItem.appearance().setBackButtonTitlePositionAdjustment(UIOffsetMake(-100, 0), for:UIBarMetrics.default)你不能改变Y偏移,因为它会改变在iOS11中,后退button的位置也是如此,但是在iOS10及更低版本中是可以的。 
Swift版本在全球范围内完美运行:
  func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.clearColor()], forState: UIControlState.Normal) UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.clearColor()], forState: UIControlState.Highlighted) return true } 
 这是从我的xamarin.forms代码,类派生自NavigationRenderer 
 NavigationBar.Items.FirstOrDefault().BackBarButtonItem = new UIBarButtonItem( "", UIBarButtonItemStyle.Plain, null);