如何在 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 上更改后退按钮的文本的主要内容,如果未能解决你的问题,请参考以下文章