2

ユーザーの好みに応じて異なる言語で表示する必要があるタブバーアプリがありますが、実行時にタブ名を変更する方法について多くの情報を見つけることができません。タブにアクセスしたときではなく、起動時に正しい名前を表示するためにタブが必要です。

私が見つけた最高の情報は走っていた

self.tabBarController.selectedIndex = 1;
tabBarController.selectedViewController.tabBarItem.title = @"Tab Name";

アプリデリゲートからですが、これにより最初にタブがアクティブになり、次に名前が設定されます。

実行時にタブ名を設定するためのより良い方法はありませんか?理想的には、それらすべてを一度に設定したいと思います。

4

5 に答える 5

2

UITabBarへの参照がある場合は、次のようなものを使用できます。

for (UITabBarItem *tabBarItem in tabBar)
{
  tabBarItem.title = NSLocalizedString(...);
}
于 2010-06-22T07:36:49.823 に答える
2

2つの応答は私にはうまくいきませんでした、私は最終的に次のようにそれをしました:

// Create temp strings to hold tab names
NSString *tab0Name;
NSString *tab1Name;
NSString *tab2Name;
NSString *tab3Name;
NSString *tab4Name;

// Set strings according to language
if ([UIAppDelegate.iStegAppLanguage isEqualToString:@"FR"])
{
    tab0Name = @"Accueil";
    tab1Name = @"Produits";
    tab2Name = @"Caisse";
    tab3Name = @"Branches";
    tab4Name = @"Plus";
}
else if ([UIAppDelegate.iStegAppLanguage isEqualToString:@"IT"])
{
    tab0Name = @"Home";
    tab1Name = @"Prodotti";
    tab2Name = @"Checkout";
    tab3Name = @"Filiali";
    tab4Name = @"More";
}
else if ([UIAppDelegate.iStegAppLanguage isEqualToString:@"EN"])
{
    tab0Name = @"Home";
    tab1Name = @"Products";
    tab2Name = @"Checkout";
    tab3Name = @"Branches";
    tab4Name = @"More";
}
else    // Default to german unless specifically set to another language
{
    tab0Name = @"Home";
    tab1Name = @"Produkte";
    tab2Name = @"Checkout";
    tab3Name = @"Filialen";
    tab4Name = @"Mehr";
}

// Set tab name
self.tabBarController.selectedIndex = 1;
tabBarController.selectedViewController.tabBarItem.title = tab1Name;
self.tabBarController.selectedIndex = 2;
tabBarController.selectedViewController.tabBarItem.title = tab2Name;
self.tabBarController.selectedIndex = 3;
tabBarController.selectedViewController.tabBarItem.title = tab3Name;
self.tabBarController.selectedIndex = 4;
tabBarController.selectedViewController.tabBarItem.title = tab4Name;
self.tabBarController.selectedIndex = 0;
tabBarController.selectedViewController.tabBarItem.title = tab0Name;    // Home last so it's shown first
于 2010-07-05T13:04:22.487 に答える
1

XIBファイルをローカライズすることをお勧めします。

  • XIBファイルを右クリックします
  • "情報を取得"
  • 上部の[一般]タブ
  • 下部にある[ファイルをローカライズ可能にする]ボタン
  • 上部の[全般]タブに戻る
  • 下部にある[ローカリゼーションの追加]ボタン+必要なロケールを入力します(例: "en"、 "fr"、 "he"、 "ru"など)

要求されたすべての言語が揃うまで、最後の手順を繰り返します。
自動的に作成されるデフォルトの「英語」の代わりに「en」を使用することを好みます。「en」も使用する場合は、最後に「English」を削除してください...

これで、ロケールごとにタブに異なるタイトルを入力できます...

于 2010-06-22T08:08:20.573 に答える
1

私がそれをした方法は、アプリデリゲートでアウトレットを定義することです:

IBOutlet UITabBarItem *tabBarItem1;
IBOutlet UITabBarItem *tabBarItem2;
IBOutlet UITabBarItem *tabBarItem3;
IBOutlet UITabBarItem *tabBarItem4;

次に、IBでコンセントを接続した後、これを次の場所に配置し- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptionsます。

[tabBarItem1 setTitle:NSLocalizedString(@"tab1", @"")];
[tabBarItem2 setTitle:NSLocalizedString(@"tab2", @"")];
[tabBarItem3 setTitle:NSLocalizedString(@"tab3", @"")];
[tabBarItem4 setTitle:NSLocalizedString(@"tab4", @"")];

それは動作しますが、私もそれに満足していません-何らかの理由で、ローカライズ可能なMainWindow.xibを正しく動作させることができません。

于 2010-09-30T12:27:29.140 に答える
0

私が使用しているもの:

NSArray *itemsTabBar = [[NSArray alloc] initWithArray:[self.tabBarController.tabBar items]];

    [[itemsTabBar objectAtIndex:0] setTitle:@"Contacts"];
    [[itemsTabBar objectAtIndex:1] setTitle:@"Settings"];
于 2012-08-01T03:05:06.013 に答える