选项卡栏项目本地化



要本地化我的标签栏项目,我的应用程序代表中有以下代码:

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自动添加了"更多"部分,并将我的最后两个项目(设置和新项目)移到了那里。我还看到用户现在可以自定义选项卡栏选择项目顺序。那么现在如何引用所有项目并对其进行本地化?注意:我使用的是情节提要。

谢谢。

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

要本地化,首先将文本翻译成需要翻译的语言。没有分离敌人正常本地化和选项卡栏项。

将文本输入相应的语言本地化字符串。

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

对于设置标题的选项卡栏按钮设置在这里。它必须在实现类中实现

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
   // set title here
}
return self;
}
<</div> div class="one_answers">

我不认为添加那么多标签栏项目是一种好的做法,因为没有足够的空间让用户触摸每个项目。将相应的琐碎项目放入一个"更多"条形图中会更好。对你不利,但对更好的用户体验有好处。好吧,如果您确实有此要求,则可以制作一个自定义的UIView作为选项卡栏(当然,这不是真正的选项卡栏),然后将所需的任何内容放入其中。

最新更新