背景: 我已使用此link设置了我的应用。
这是因为我的应用需要动态更改语言环境,而不是参考手机的语言设置。
看看这个screenshot(原谅我,我没有足够的声望点来上传照片)。现在,显示的语言是中文。然而," Back"左上角的按钮采用手机设置中设置的语言。
我现在所知道的:
我可以在" Back"中设置文字。通过在上一个视图中设置它,即按下此视图之前的视图。
UIBarButtonItem *backItem = [[UIBarButtonItem alloc] initWithTitle:@"<MY CUSTOM BACK>" style:UIBarButtonItemStyleBordered target:nil action:nil];
[self.navigationItem setBackBarButtonItem:backItem];
这样可行,我可以将文本设置为我想要的内容。但这意味着我需要在每个视图控制器中添加此代码段。
我的问题: 我希望能够在一个位置设置它,然后它将适用于整个应用程序。我想知道是否可能,如果是的话,我怎么能实现它?
提前致谢!
答案 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];