4

要本地化我在 AppDelegate 中拥有的标签栏项目,请使用以下代码:

self.tabBarController = (UITabBarController*)self.window.rootViewController;
tabBarController.delegate = self;
tabBarController.selectedIndex = 0;
[[tabBarController.tabBar.items objectAtIndex:0] setTitle:NSLocalizedString(@"Home", nil)];
[[tabBarController.tabBar.items objectAtIndex:1] setTitle:NSLocalizedString(@"Requests", nil)];
[[tabBarController.tabBar.items objectAtIndex:2] setTitle:NSLocalizedString(@"Account", nil)];
[[tabBarController.tabBar.items objectAtIndex:3] setTitle:NSLocalizedString(@"Alarms", nil)];
[[tabBarController.tabBar.items objectAtIndex:4] setTitle:NSLocalizedString(@"Settings", nil)];

现在我添加了另一个项目并尝试添加一个索引 = 5 的新行,但我得到一个“NSRangeException”,因为索引 5 超出了范围。Xcode 自动添加了“更多”部分,并将我的最后两个项目(设置和新项目)移到了那里。我还看到用户现在可以自定义选项卡栏来选择项目顺序。那么现在我如何才能引用所有项目并将它们本地化呢?注意:我正在使用故事板。

谢谢。

4

3 回答 3

2

对我来说最简单的解决方案是实现awakeFromNib方法,即使使用选项卡也会运行。

// Objective-C
- (void)awakeFromNib{
    [super awakeFromNib];
    self.title = NSLocalizedString(@"YOUR-LOCALISATION-TAG", @"");
}


// Swift
override  func awakeFromNib() {
    super.awakeFromNib()
    self.title = NSLocalizedString("YOUR-LOCALISATION-TAG", comment: "")
}
于 2016-08-29T12:29:24.437 回答
0

要本地化首先将文本翻译成您需要翻译的语言。没有分离敌人正常的本地化和tabBarItem。

将文本赋予相应语言的本地化字符串。

"Home"="translate text";
"Requests"="translate text";
"Account"="translate text";
"Alarms"="translate text";
"Settings"="translate text";

对于在此处设置的 TabbarButton 的设置标题。它必须在实现类中实现

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
   // set title here
}
return self;
}
于 2012-09-21T08:58:52.953 回答
-2

我不认为添加这么多标签栏项目是一个好习惯,因为没有足够的空间让用户甚至触摸每个项目。将相应的琐碎项目放入一个“更多”栏项目会更好。对您不利,但对更好的用户体验有利。好吧,如果您确实有这个要求,您可以制作一个自定义的 UIView 作为您的标签栏(当然,这不是真正的标签栏)并将您想要的任何内容放入其中。

于 2014-04-28T09:56:07.637 回答