MoreNavigationController verändern
Aus Macwrench
Bekanntermaßen wird in in einer iPhone Applikation, die einen UITabBarController verwendet, ab einer Anzahl von mehr als 5 Tabs ein "moreController" hinzugefügt. Dieser besteht im Prinzip aus nichts weiterem als einer automatisch generierten UITableView, die alle weiteren ViewController der Tab-Bar enthält und deren Darstellungsreihenfolge in der TabBar außerdem über einen weiteren ViewController verändert werden kann.
Von Haus aus bietet das iPhone SDK jedoch keinerlei Möglichkeiten, diesen Controller direkt zu verändern, allerdings ist auf "inoffiziellem" Wege doch einiges möglich.
In der AppDelegate in der Methode
- (void)applicationDidFinishLaunching:(UIApplication *)application;
Kann mit folgendem Stück Code die Navigationbar geändert werden (der tabBarController muss natürlich als Property o.ä. ansprechbar sein):
UIView *views = [theTabBarController.view.subviews objectAtIndex:1]; UINavigationBar *navBar = [[views subviews] objectAtIndex:0]; navBar.barStyle = UIBarStyleBlack;
Zugriff auf den moreController
Über den tabBarController ist auch der Zugriff auf den moreController und dessen View möglich, was allerdings über eine private und undokumentierte Klasse namens UIMoreListController läuft:
UIMoreListController *moreController = [[tabBarController.moreNavigationController viewControllers] objectAtIndex:0];
Die View dieses Controllers ist dann eine gewöhnliche UITableView, die alle überzählichen ViewController des TabBarControllers enthält.
Auf diesem Weg lässt sich dann beispielsweise die Hintergrundfarbe der TableView ändern:
tabBarController.moreNavigationController.topViewController.view.backgroundColor = [UIColor colorWithRed:0.9373 green:0.9373 blue:0.9373 alpha:1.0000];
Siehe auch
- UIMoreListController Class Reference (ericasadun.com)
- Customizing the More menu on a Tab bar (stackoverflow.com)





