我尝试在从网络接收内容时更改UINavigationBar上的后退按钮文本 - 基本上通过向后退按钮文本添加新消息计数来复制iMessage / FB Messenger,即。 <返回(1)或<消息(2)
我可以从显示的ViewController(在viewDidLoad中)更改后退按钮文本
UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @"Back";
self.navigationItem.backBarButtonItem = barButton;
但是当我尝试在接收新消息时调用的另一种方法中使用相同的代码时,后退按钮文本不会改变。
知道如何在ViewController 显示之后更改后退按钮文本吗?
答案 0 :(得分:3)
首先,当UINavigationItem.backBarButtonItem
位于导航堆栈顶部时,视图控制器A
的{{1}}不是左侧栏按钮,而{{1}时是左侧栏按钮}}是导航堆栈的 second-top 。
也就是说,您按A
,然后按A
,当A
位于顶部时,左侧栏按钮将为B
一个简单但不那么优雅的解决方案是:
将B
弱引用A.navigationItem.backBarButtonItem
,B
提供一个界面来更改它的后退按钮,如下所示:
A
然后A
调用此方法在@implementation A
-(void)changeBackTitle:(NSString*)title
{
UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithTitle:title style:UIBarButtonItemStyleDone target:nil action:nil];
self.navigationItem.backBarButtonItem = back;
}
-(void)restoreBackButton
{
self.navigationItem.backBarButtonItem = nil;
}
@end
位于堆栈顶部时更改后退按钮标题
请务必在弹出B
时恢复后退按钮,否则下次从B
推送B
将显示可能错误的后退按钮。