当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文本相同的话怎么办?
UIImagePickerController
是UINavigationController
的子类,因此:
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];
}