Ich habe einen UITabBarController mit zwei Registerkarten eingerichtet, einer ist ein einfacher UIViewController und der andere ist ein UINavigationController, der einen zweiten UIViewController als rootController verwendet (dies wird später zur Einrichtung eines UITableView verwendet). Meine Frage ist im Hinblick auf die Benennung der Registerkarten (d. H. Einstellung der Titel der einzelnen UITabBarItem)Einstellung UITabBarItem Titel von UINavigationController?
Für die erste Registerkarte (einfache UIViewController) Ich habe folgende hinzugefügt (siehe unten) zu den Controllern -init-Methode.
// FROM -[MapController init]
- (id)init {
self = [super init];
if(self) {
UITabBarItem *tabBarItem = [self tabBarItem];
[tabBarItem setTitle:@"ONE"];
}
return self;
}
Für die andere Registerkarte habe ich hinzugefügt (siehe unten) zu den zweiten Controllern init (rootController).
// FROM -[TableController init]
- (id)init {
self = [super init];
if(self) {
UITabBarItem *tabBarItem = [[self navigationController] tabBarItem];
[tabBarItem setTitle:@"TWO"];
}
return self;
}
Bin ich die zweite tabBarItem Titel in der richtigen Stelle Einstellung, wie sie derzeit ist es nicht angezeigt wird, wenn ich die Anwendung der erste Reiter laufen, sagt „ONE“, die zweite leer ist. Auch TabBarItem (oben) zeigt Null, wenn ich den Wert drucke oder über den Debugger suche.
EDIT_001: Hinzugefügt vollständige Code von AppDelegate
Ich kann richtig die UITabBarItem gesetzt innerhalb der AppDelegate, wenn ich die Controller zunächst erstellen, bereit für die zum UITabBarController hinzufügen. Aber ich wollte das wirklich in den einzelnen Controller -init-Methoden zur Ordentlichkeit machen.
// UITabBarController
UITabBarController *tempRoot = [[UITabBarController alloc] init];
[self setRootController:tempRoot];
[tempRoot release];
NSMutableArray *tabBarControllers = [[NSMutableArray alloc] init];
// UIViewController ONE
MapController *mapController = [[MapController alloc] init];
[tabBarControllers addObject:mapController];
[mapController release];
// UITableView TWO
TableController *rootTableController = [[TableController alloc] init];
UINavigationController *tempNavController = [[UINavigationController alloc] initWithRootViewController:rootTableController];
[rootTableController release];
[tabBarControllers addObject:tempNavController];
[tempNavController release];
[rootController setViewControllers:tabBarControllers];
[tabBarControllers release];
[window addSubview:[rootController view]];
[window makeKeyAndVisible];
EDIT_002: Lösung so weit, beispielsweise Update-UITabBarItems in AppDelegate
// TABLE CONTROLLER
TableController *tableController = [[TableController alloc] init];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tableController];
[tableController release];
[tabBarControllers addObject:navController];
UITabBarItem *tabBarItem_002 = [navController tabBarItem];
[tabBarItem_002 setTitle:@"TWO"];
[tabBarItem_002 setImage:[UIImage imageNamed:@"GT_TWO.png"]];
[navController release];
EDIT_003: ist es eine Möglichkeit, die UITabBarItem in der UINavigationController zu setzen oder ist der Delegierte der beste Ort, es zu tun (wie es scheint) wirklich.
self.navigationController.tabBarItem = tabBarItem ist was für mich funktionierte, falls jemand eine andere Lösung ausprobieren möchte! – Rabiees