本地化的 UITabBar 项"Back"标题



当uinavigation controller中的上一个uiviewController的文本太长时,uitabbaritem显示" back"

在我的应用中,我允许用户通过以下代码更改语言:

[[NSUserDefaults standardUserDefaults] setObject:locale forKey:@"locale"];
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:locale, nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];

环境将为" en"或" es"等。

我还添加到本地化文件中的后文本。我看到,当用户打开应用程序时,它将根据可本地文件中的文本显示"返回"。但是,如果用户使用上述代码更改语言,则他需要重新启动该应用程序以进行应用程序捆绑包的更改。

我还需要在uipickercontroller上的文本例如。删除

如何修复它,以便用户在设置语言环境后不需要重新启动应用程序?

@dejel:使用" tslanguagemanager"库,它在设置"语言环境"之后不需要在运行时更改localze文本。

您可以从下面的链接下载示例:

https://github.com/tonisalae/tslanguagemanager

@dejel:使用"语言manager"库,它在设置LOCALE的运行时更改Localze文本。

您可以从下面的链接下载示例:

https://www.cocoacontrols.com/controls/languagesmanager

在视图控制器上,您可以手动将" Back"文本设置为您喜欢的任何内容:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc]
                                           initWithTitle:NSLocalizedString(@"Back", nil)
                                           style:UIBarButtonItemStyleBordered
                                           target:nil action:nil];
[self.navigationItem setBackBarButtonItem: backButton];

如果用户更改语言,只需再次运行代码以重置后栏按钮项目。

我建议在抽象子类中进行此操作,因此您无需在任何地方执行此代码。

如果我需要uiimagepicker文本相同的话怎么办?

UIImagePickerControllerUINavigationController的子类,因此:

UIImagePickerController *imagePicker = //make your image picker…
imagePicker.delegate = self;
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    UIViewController *vc = [[navigationController viewControllers] lastObject];
    [vc.navigationItem setBackBarButtonItem: backButton];
}

最新更新