选项卡项目本地化

4
为了本地化我的 Tab Bar 项目,我在 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添加新行,但是由于索引5超出范围而出现“NSRangeException”。 Xcode自动添加了“更多”部分,并将我的最后两个项目(设置和新项目)移动到该部分。 我还看到用户现在可以自定义选项卡栏选择项目顺序。 那么现在我该如何引用所有项目并对其进行本地化? 注意:我正在使用故事板。
谢谢。
3个回答

3

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

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;
}

我知道Vineesh TP,这不是问题。问题是,如果我添加一个索引为5的新选项卡,我会收到一个NSRangeException错误。或者你的意思是我甚至不需要设置标题? - Aleph72
你是否正确使用了TabBar应用?给定的BarButton标题不在Application Delegate类中,它必须在你的实现类中给出。 - Vineesh TP
我知道。我已经将它放在AppDelegate中,因为当应用程序启动时,它会检查某些内容并设置一些选项卡栏项目的徽章。 - Aleph72

-2

我认为添加太多的选项卡条目并不是一个好的做法,因为用户甚至没有足够的空间去触摸每个条目。将相应的琐碎项目放入一个“更多”条目中会更好。这对你来说可能不好,但对于更好的用户体验来说是好的。如果您确实有这个要求,可以制作一个自定义的UIView作为您的选项卡条(当然,这不是真正的选项卡条),并将任何您想要的内容放入其中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接