iOS >> 导航项后退按钮标题不变
Posted
技术标签:
【中文标题】iOS >> 导航项后退按钮标题不变【英文标题】:iOS >> UINavigation Item Back Button Title Doesn't Change 【发布时间】:2013-08-26 13:40:28 【问题描述】:我正在尝试为 UINavigationController 堆栈中的推送 VC 集设置 BACK 按钮。我使用以下代码,但它不起作用 - 我仍然得到以前的 VC 名称显示为后退按钮标题。
-(void)viewWillAppear:(BOOL)animated
[super viewWillAppear:animated];
self.title = @"VC Title";
UIBarButtonItem* myBackButton = [[UIBarButtonItem alloc]
initWithTitle:@"Back"
style:UIBarButtonItemStyleBordered
target:nil
action:nil];
self.navigationItem.backBarButtonItem = myBackButton;
有人吗?
【问题讨论】:
【参考方案1】:在父视图控制器中:
- (void)viewWillDisappear:(BOOL)animated
self.title = @"Back";
- (void)viewWillAppear:(BOOL)animated
self.title = @"Title of your navigation bar";
会成功的
【讨论】:
【参考方案2】:尝试在父视图控制器的viewDidLoad
中设置标题
UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(popView)];
self.navigationItem.leftBarButtonItem = customBarItem;
【讨论】:
谢谢克里斯13。做到了。奇怪的是 self.navigationItem 与下一个 VC 相关,而不是与当前活跃的 VC 相关……知道为什么,或者你有一个很好的解释链接吗? 我也觉得这很奇怪,但 Apple Docs 让它更清晰一些。如果它对你有帮助,请接受答案;) 只需使用 Storyboard - UIController - Naviation Item 并在 Attributes Insprector 中为此视图设置“返回按钮”。 NEXT 视图将使用它作为返回按钮文本。【参考方案3】:来自 Apple 的文档:
导航栏左侧的栏按钮项允许导航回导航堆栈上的上一个视图控制器。导航控制器更新导航栏左侧如下:
如果新的***视图控制器有一个自定义的左栏按钮项,则显示该项。要指定自定义左栏按钮项,请设置视图控制器导航项的 leftBarButtonItem 属性。
如果***视图控制器没有自定义左栏按钮项,但前一个视图控制器的导航项在其 backBarButtonItem 属性中有有效项,则导航栏显示该项。
如果任何一个视图控制器都没有指定自定义栏按钮项,则使用默认的后退按钮,并将其标题设置为前一个视图控制器的 title 属性的值——即视图控制器之一在堆栈上降级。 (如果导航堆栈上只有一个视图控制器,则不会显示返回按钮。)
希望这会有所帮助。
【讨论】:
谢谢 johnyu。但是,如果我选择将自定义 barButton 设置为 navigationItem.leftBarButtonItem 的第一个选项,则它没有默认的后退按钮“箭头”形状外观。知道如何解决吗? +1 这是链接:更新导航栏developer.apple.com/library/ios/documentation/uikit/reference/… 谢谢!最后,我设法将我想要的行为赋予了我的后退按钮。【参考方案4】:self.navigationItem.hidesBackButton = YES;
self.navigationItem.leftBarButtonItem =[[UIBarButtonItem alloc] initWithTitle:@"Put Any Title"
style:UIBarButtonItemStyleBordered
target:nil
action:nil];
【讨论】:
【参考方案5】:给前一个viewController的navigationItem设置一个backBarButtonItem。 检查这个答案https://***.com/a/25680043/111277。详细分析请查看我的博文iOS Set Navigation Bar Back Button Title。
【讨论】:
【参考方案6】:另一种解决方案,非常快。
在您的基本视图控制器中覆盖此方法,您将在每个推送的视图控制器上都有返回按钮。 (只是不要加[super setTitle:title]
)
- (void)setTitle:(NSString *)title
UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 44)];
[lbl setText:title];
[lbl setTextColor:[UIColor whiteColor]];
[self.navigationItem setTitleView:lbl];
【讨论】:
【参考方案7】:用于情节提要解决方案;
单击前一个视图控制器的导航项。然后单击右窗格上的属性检查器,然后在后退按钮区域写“”或其他任何内容。这将告诉视图控制器在下一个(子)视图控制器中显示什么。希望对你有帮助
用于代码解决方案;
UIBarButtonItem *customBarItem = [[UIBarButtonItem alloc] initWithTitle:@"back off" style:UIBarButtonItemStyleBordered target:self action:@selector(popView)];
[[self navigationItem] setBackBarButtonItem:customBarItem];
【讨论】:
以上是关于iOS >> 导航项后退按钮标题不变的主要内容,如果未能解决你的问题,请参考以下文章