iOS如何在整个应用程序中更改导航项的“后退”按钮的文本

时间:2014-04-01 07:20:10

标签: ios objective-c navigation navigationbar

背景: 我已使用此link设置了我的应用。

这是因为我的应用需要动态更改语言环境,而不是参考手机的语言设置。

看看这个screenshot(原谅我,我没有足够的声望点来上传照片)。现在,显示的语言是中文。然而," Back"左上角的按钮采用手机设置中设置的语言。

我现在所知道的:

我可以在" Back"中设置文字。通过在上一个视图中设置它,即按下此视图之前的视图。

UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"<MY CUSTOM BACK>" style:UIBarButtonItemStyleBordered target:nil action:nil];
[self.navigationItem setBackBarButtonItem:backItem];

这样可行,我可以将文本设置为我想要的内容。但这意味着我需要在每个视图控制器中添加此代码段。

我的问题: 我希望能够在一个位置设置它,然后它将适用于整个应用程序。我想知道是否可能,如果是的话,我怎么能实现它?

提前致谢!

4 个答案:

答案 0 :(得分:0)

从BaseViewController子类化ViewControllers,它实现所有设计/公共方法或子类化NavigationController并更改故事板中的类。

答案 1 :(得分:0)

总的来说,我认为这违反了Apple的设计指南。

但是,这post似乎提供了解决方案。

答案 2 :(得分:0)

修改AppDelegate的didFinishLaounchingWithOptions方法中的全局UI自定义

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
 {
     [self customizeUI];
 }

 -(void)customizeUI
{
    [[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                                                          [UIColor redColor],NSForegroundColorAttributeName,
                                                          [UIFont fontWithName:@"Arial" size:20.0],NSFontAttributeName,
                                                          nil]
                                                forState:UIControlStateNormal];
}

答案 3 :(得分:0)

您可以像这样使用Aspects

[UIViewController aspect_hookSelector:@selector(viewDidLoad) withOptions:AspectPositionAfter usingBlock:^(id<AspectInfo> aspectInfo){
    UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:nil action:nil];
    [((UIViewController*)aspectInfo.instance).navigationItem setBackBarButtonItem:backItem];
} error:NULL];