Ios 从显示的ViewController动态更改导航栏后退按钮文本
我试图在从网络接收到信息时更改UINavigationBar上的后退按钮文本-基本上是通过向后退按钮文本添加新的消息计数来复制iMessage/FB Messenger,即Ios 从显示的ViewController动态更改导航栏后退按钮文本,ios,objective-c,uinavigationbar,back-button,uinavigationitem,Ios,Objective C,Uinavigationbar,Back Button,Uinavigationitem,我试图在从网络接收到信息时更改UINavigationBar上的后退按钮文本-基本上是通过向后退按钮文本添加新的消息计数来复制iMessage/FB Messenger,即
您知道如何在显示后更改ViewController中的后退按钮文本吗 首先,
UINavigationItem。视图控制器A
的backBarButtonItem
在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
时恢复后退按钮,否则下次从A
按B
时,可能会显示错误的后退按钮
@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