1

我有导航控制器,我想更改 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;
}
4

2 回答 2

8

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

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

于 2013-07-15T08:42:29.437 回答
0

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

例如:

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

[self.navigationController pushViewController:viewController];

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

于 2013-07-15T08:45:40.347 回答