TabBar项目本地化

时间:2012-09-21 08:47:34

标签: ios tabbar

要在我的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)];

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

感谢。

3 个答案:

答案 0 :(得分:1)

对我来说最简单的解决方案是实现 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: "")
}

答案 1 :(得分:0)

要进行本地化,请先将文本翻译成您需要翻译的语言。 正常的本地化和tabBarItem没有分离。

将相应语言中的文本本地化为String。

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

在此处设置TabbarButton的设置标题。它必须在实现Class

中实现
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
   // set title here
}
return self;
}

答案 2 :(得分:-2)

我不认为添加许多标签栏项目是一个很好的做法,因为没有足够的空间让用户甚至触摸每个项目。将相应的琐碎项目放入一个“MORE”条形项目会更好。对你不好,但对更好的用户体验有好处。好吧,如果你有这个要求,你可以制作一个自定义的UIView作为你的标签栏(当然,这不是一个真正的标签栏),并把你想要的任何东西放入其中。

相关问题