自定义UINavigationBar返回按钮且不带标题

238

如何在iOS 7及以上版本中定制没有标题的返回导航按钮?(即只有箭头)

self.navigationItem.leftBarButtonItem = self.editButtonItem;

我只是想知道他们是否有任何self.backButtonItem; 或者类似这样的东西?

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]
                   initWithBarButtonSystemItem:UIBarButtonSystemItemBACK 
                   target:self action:@selector(back)];

3
您可以使用 @hiroshi 的答案和导航栏 tintColor 属性来制作自定义颜色的 chevron(矢车菱形符号),而且没有任何标题。 - Dmitry Zhukov
对于那些拥有选项卡栏的用户,如果您不想要返回按钮的文本,则可以在TabBarController的**viewDidLoad()**中添加以下代码进行修复:self.navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) - Borzh
36个回答

0

补充Thomas C的答案,有时候只添加一个空格不起作用,你需要持续添加空格。

empty bar button

当你在“导航项”下面看到“栏按钮项 - ”时,你就知道你成功了。这在文档大纲(编辑->显示文档大纲)中可以找到。一旦你看到上面的图片,你可以删除一些空格并查看它是否仍然有效。


0

您可以将该类别放置在AppDelegate.m文件中,以从所有默认的UINavigation返回按钮中删除文本。只保留箭头"<"或设置自定义图像(如果需要)。

Objective-c:

...

@end

@implementation UINavigationItem (Extension)
- (UIBarButtonItem *)backBarButtonItem {
return [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil]; }
@end

这段代码是关于编程的,它扩展了UINavigationItem类。其中的方法backBarButtonItem返回一个UIBarButtonItem对象,该对象没有标题,样式为UIBarButtonSystemItemPlain,目标和操作都为空。


0

将返回按钮的标题设置为空字符串。

[self.navigationController.navigationBar.backItem setTitle:@""];


1
这个东西在其他答案中已经被突出显示了,它没有为这个问题带来新的内容或涵盖新的方面。 - mfaisalhyder

0
- (id)initWithCoder:(NSCoder *)aDecoder
{
    self = [super initWithCoder:aDecoder];
    if (self) {
        // Custom initialization
        self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];

    }
    return self; 
}

就像Kyle Begeman一样,您可以将上述代码添加到根视图控制器中。所有子视图控制器都将应用该样式。此外,在initWithCoder:方法中添加此代码,您可以为xib、storyboard或基于代码的方法应用根视图控制器的样式。


-1

这对iOS6和7都非常有效。

Xamarin(C#)选项

var buttonStyleItems = UIBarButtonItem.AppearanceWhenContainedIn(typeof(SettingsNavigationController));
buttonStyleItems.SetBackButtonTitlePositionAdjustment(new UIOffset(-1000, -1000), UIBarMetrics.Default);

Objective-C选项

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


如果您的应用程序支持32位设备,这将不幸地导致64位兼容性问题。这是一个苹果的错误,但没有解决方法,也不是可行的解决方案。请查看我的答案以获取有效的解决方法。 - Dima
答案说明它适用于iOS6和7?无法保证支持未来的版本... - Kodejack

-1

这对我很有帮助

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

祝一切顺利


如果根标题很长,那么子标题将不会居中。 - fuiiii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接