如何在 appdelegate 上更改后退按钮的文本

Posted

技术标签:

【中文标题】如何在 appdelegate 上更改后退按钮的文本【英文标题】:How can I change back button's text on appdelegate 【发布时间】:2013-07-15 08:30:32 【问题描述】:

我有 navigationController,我想更改 appdelegate 上的导航返回按钮文本。所以我想在 appdelegate 上更改每个 uiviewController 的后退按钮的文本。有可能吗?

我编写了以下代码,但它不起作用。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    navigationController=[[UINavigationController alloc]initWithRootViewController:self.viewController];

    self.window.rootViewController =  self.navigationController;


    self.navigationController.navigationItem.backBarButtonItem =
    [[UIBarButtonItem alloc] initWithTitle:@"custom back text"
                                     style:UIBarButtonItemStyleBordered
                                    target:nil
                                    action:nil];  // didn't work


    [self.window makeKeyAndVisible];
    return YES;

【问题讨论】:

究竟是什么不工作?你看到一个按钮了吗? @giorashc 这段代码:self.navigationController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"custom back text" style:UIBarButtonItemStyleBordered target:nil action:nil]; 我明白 :) 但你在屏幕上看到了什么?你看到按钮了吗?应用程序是否崩溃等...? 我编辑了问题。你能看看@giorashc 您不应该在 AppDelegate 中执行此操作。你的 AppDelegate 应该是最小的。加载第一个视图控制器,展示它,完成。 AppDelegate 应该什么都不做。 (好吧,除了 UIApplication 委托方法)。像这样编辑视图控制器是视图控制器的工作 【参考方案1】:

您需要了解导航栏(有一个,由导航控制器拥有、管理和控制)和导航项(有很多,导航控制器堆栈中每个视图控制器一个,拥有和控制)之间的区别由视图控制器)。所以你不能从你尝试的地方改变它。

相反,在每个视图控制器中更改它或将导航控制器子类化(或充当其委托),以便您可以在添加到堆栈时更改每个视图控制器。

【讨论】:

【参考方案2】:

只是添加到我打字时出现的答案。

例如:

UIViewController *viewController = [[UIViewController alloc] init];
viewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"custom back text"
                                     style:UIBarButtonItemStyleBordered
                                    target:nil
                                    action:nil];

[self.navigationController pushViewController:viewController];

但要小心。有了这个,您现在负责处理按钮操作,而这里的这个将什么也不做。

【讨论】:

以上是关于如何在 appdelegate 上更改后退按钮的文本的主要内容,如果未能解决你的问题,请参考以下文章

如何在渲染后更改后退按钮上的文本

如何更改 iOS 上后退按钮的位置?

更改后退按钮上的颜色(在ActionBar上)

如何更改后退按钮上的文本?

如何在swift3中更改导航控制器上的后退按钮标题?

如何在JQM中全屏显示Fancybox图像时阻止后退按钮上的页面更改?