gpt4 book ai didi

ios - 从呈现的 View Controller 动态更改导航栏后退按钮文本

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:02:01 26 4
gpt4 key购买 nike

我试图在从网络接收到某些内容时更改 UINavigationBar 上的后退按钮文本 - 基本上是通过向后退按钮文本添加新的消息计数来复制 iMessage/FB Messenger,即。 < 返回 (1) 或 < 消息 (2)

我可以从呈现的 ViewController(在 viewDidLoad 中)更改后退按钮文本

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @"Back";
self.navigationItem.backBarButtonItem = barButton;

但是当我尝试在收到新消息时调用的另一个方法中使用相同的代码时,后退按钮文本没有改变。

知道如何在 ViewController 呈现后更改后退按钮文本吗?

最佳答案

首先,当 A 位于导航堆栈顶部时, View Controller AUINavigationItem.backBarButtonItem 不是左栏按钮,当 A 位于导航堆栈的 second-top 时,它是左栏按钮。

也就是说,你先按A,再按B,当B在最上面时,左边的bar button是A.navigationItem.backBarButtonItem

一个简单但不那么优雅的解决方案是:

B 一个对 A 的弱引用,A 提供一个接口(interface)来改变它的后退按钮,如下所示:

@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

然后 BB 位于栈顶时调用此方法更改后退按钮标题

请记住在 B 弹出时恢复后退按钮,否则下次从 A 按下 B 将显示可能错误的后退按钮。

关于ios - 从呈现的 View Controller 动态更改导航栏后退按钮文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28786969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com