繁体   English   中英

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

[英]iOS How to change the “Back” button's text of the Navigation Item throughout the app

背景:我已经使用此链接设置了我的应用。

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

看一下这个屏幕截图 (对不起,我没有足够的声誉点可以在此处上传照片)。 现在,显示的语言是中文。 但是,左上角的“返回”按钮使用手机设置中设置的语言。

我现在知道的是:

我可以通过在上一个视图中(即在按下此视图之前的视图中)设置“后退”中的文本。

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

这将起作用,我将能够将文本设置为所需的文本。 但这意味着我几乎需要在每个视图控制器中添加此代码段。

我的问题:我希望能够将其设置在一个位置,然后将其应用于整个应用程序。 我想知道是否有可能,如果可以,我如何实现呢?

提前致谢!

从实现了所有设计/通用方法的BaseViewController子类化ViewControllers,或将NavigationController子类化并在情节提要中更改类。

总的来说,我认为这违反了苹果的设计准则。

但是,此帖子似乎提供了解决方案。

在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];
}

您可以像这样使用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];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM