2010-12-27 7 views
0

angepasst Ich habe eine UITabBar mit 8 Elemente in meinem XIB. Ich habe diese UITabBarItems in meinem Code verlinkt, also mache ich die Lokalisierung innerhalb der ViewDidLoad Methode meines Hauptfensters UITabBarController. z. tabBarItem1.title = NSLocalizedString (@ "TAB1");iPhone - Ändern UITabBarItem Titel nach ist in Mehr Abschnitt

Mein Problem ist, dass, nachdem ich die Reihenfolge im Abschnitt Weitere Konfiguration geändert habe, die Elemente, die nicht an der Front waren, ihren ursprünglichen nicht lokalisierten Titel aus der .xib-Datei behalten.

Irgendwelche Hilfe ??

Antwort

0

In jedem View-Controller, man konnte sie ihren Titel mit so etwas wie

[[self tabBarItem] setTitle:NSLocalizedString(@"TAB1")]; 

gesetzt haben, dass Ihre Anwendung helfen könnte zu verhindern, verwirrt. Ich denke, dass ein TabBarItem eine Sache ist, auf die man sich beziehen kann (wie das Setzen eines Titels in einem Navigationscontroller).

+0

Vielen Dank für Ihre Antwort, aber es hat nicht funktioniert für mich . Wenn ich den Abschnitt mehr konfiguriere, wenn ich das Symbol in den 4 angezeigten Elementen ziehe, kann ich den Originaltitel sehen. Edit: Wenn ich die Anwendung neu starte und der Tab zwischen den 4 sichtbar ist, wird der Titel geändert. – vame

+0

Also, macht es schließlich die Änderung? Wenn das so ist, würde ich versuchen, den Code in verschiedene Methoden zu platzieren (viewWillAppear, viewDidAppear, etc.). Entschuldigung, ich kann nicht genauer sein, aber ohne auf deinen Code selbst zu schauen, ist es schwer zu sagen. – Walter

0

Ich zeige eine Lösung. Das Ideal könnte sein, den TabBarItem-Titel unter didEndCustomizingViewControllers zu ändern.

self.selectedIndex = 3; 
[self.selectedViewController.tabBarItem setTitle:@"SSDDD"]; 

das funktioniert, aber wenn ich eine nicht statische Zeichenfolge verwenden, zum Beispiel NSLocalizedString() -Methode, es funktioniert nicht. Funktioniert auch für lokalisierte Strings, die sich in den 4 sichtbaren Registerkarten befinden. Scheint sehr komisch.

+0

Grundsätzlich bestand das Problem darin, dass die benutzerdefinierte Reihenfolge der Registerkarten durch den Titel der Ansicht gespeichert wurde. Ich habe das Mapping gemacht, als die Anwendung gestartet wurde und funktioniert jetzt wie es sollte. Vielen Dank. – vame

0

ich lösen diese Probleme durch 2 Schritten: :)

Klicken Sie zunächst auf TabBarItem von UITabBar in der Storyboard oder .xib.Then, offen Attribut Inspektor und in Abschnitt Tab-Leiste Item, Wahl Identifier CUSTOM .Dann , set Tag (in meinem Fall: 0, 1, 2) Verbinden Sie schließlich diese TabBar mit ViewController. In meinem Fall:

@property (weak, nonatomic) IBOutlet UITabBar *tabBar;

Zweitens könnte die offenen ViewController.m in viewDidLoad: Methode

for (UITabBarItem *tabBarItem in [self.tabBar items]){ 
    NSInteger tag = tabBarItem.tag; 
    switch(tag){ 
       case 0: 
      [tabBarItem setTitle:@"Title 1"]; 
      break; 
       case 1: 
      [tabBarItem setTitle:@"Title 2"]; 
      break; 
       case 2: 
      [tabBarItem setTitle:@"Title 3"]; 
      break; 
} 

P/S: Meine Englisch Schreibfähigkeit ist schlecht. Sorry, wenn es Sie

1

unwohl fühlen Sie alle UITabBar Symbole in einer leicht way.You dies in der viewWillAppear Methode tun können einstellen:

[[self.tabBarController.tabBar.items objectAtIndex:0] setTitle:NSLocalizedString(@"Aitul", @"comment")]; 

[[self.tabBarController.tabBar.items objectAtIndex:1] setTitle:NSLocalizedString(@"Aitor", @"comment")]; 

[[self.tabBarController.tabBar.items objectAtIndex:2] setTitle:NSLocalizedString(@"Eibar", @"comment")]; 

[[self.tabBarController.tabBar.items objectAtIndex:3] setTitle:NSLocalizedString(@"Primeran", @"comment")]; 
Verwandte Themen