iOS7 UINavigationItem后退按钮标题不起作用

时间:2013-09-23 18:30:05

标签: ios ios7

我遇到了一个问题,当我将项目推送到导航控制器并且后退按钮只是说“返回”时。我尝试设置断点并检查堆栈上的导航项。堆栈中的所有项目都有一个nil backButtonItem和一个标题。我甚至尝试设置backBarButtonItem,但我仍然只是说“返回”。其他人有这个问题吗?

4 个答案:

答案 0 :(得分:7)

iOS 7会自动将后退按钮标题替换为“后退”,甚至完全删除标题以适合当前导航项目的标题。你可能不应该尝试做任何事情,除非尝试缩短你的标题。

答案 1 :(得分:0)

您需要将每个UIViewController的{​​{1}}属性设置为您想要后退按钮的内容。

相关:记录此行为的View Controller Catalog article

答案 2 :(得分:0)

在iOS 7中,先前的控制器导航项标题属性更改下一个控制器中的后退按钮。基本上,后退按钮标题是上一页的标题。

但是,如果您希望后退按钮的不同标题比前一个控制器的标题更好,则最佳选择是使用UILabel设置该控制器的导航项标题视图。然后,您可以将该控制器的导航项标题属性设置为后退按钮应显示的任何内容。使用正确的字体和大小创建标签的示例代码:

NSString * title = @"Title of page";
NSDictionary * titleAttribs = navigationController.navigationBar.titleTextAttributes;
UILabel * titleLabel = [[UILabel alloc] init];
NSAttributedString * titleAttrString = [[NSAttributedString alloc] initWithString:title attributes:titleAttribs];

// the attributed text misses the bold attribute (because bold is not considered as font attribute in Cocoa)
titleLabel.attributedText = titleAttrString;

// get font and make it bold
UIFont * font = titleLabel.font;
UIFontDescriptor * fontDesc = [font.fontDescriptor
                               fontDescriptorWithSymbolicTraits:UIFontDescriptorTraitBold];
UIFont * boldFont = [UIFont fontWithDescriptor:fontDesc size:0]; // size:0 means keep the size as is
titleLabel.font = boldFont;
[titleLabel sizeToFit];


anotherController.navigationItem.titleView = titleLabel; // this will be the title in NavBar
anotherController.navigationItem.title = @"Go back"; // this will be the title of the back button

[navigationController pushViewController:anotherController animated:YES];

答案 3 :(得分:0)

self.navigationController.navigationBar.backItem.title = @"Back!";