I use UINavigationControllers in my application, all are handled by UITabBarController . Everything works fine until my controllers get to the automatically created Advanced tab.
I reproduced the problem in a simplified example. Am I doing something wrong? I can not understand.
Thank you for your help.
#import <UIKit / UIKit.h>
@interface testAppDelegate: NSObject <UIApplicationDelegate, UITabBarControllerDelegate>
{
UIWindow * window;
UITabBarController * tabBarController;
}
@property (nonatomic, retain) IBOutlet UIWindow * window;
@property (nonatomic, retain) IBOutlet UITabBarController * tabBarController;
@end
@implementation testAppDelegate
@synthesize window, tabBarController;
- (void) applicationDidFinishLaunching: (UIApplication *) application
{
tabBarController = [[UITabBarController alloc] initWithNibName: nil bundle: nil];
UINavigationController * ctrl1 = [[[[UINavigationController alloc] initWithNibName: nil bundle: nil] autorelease];
ctrl1.tabBarItem = [[[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemFeatured tag: 1] autorelease];
UINavigationController * ctrl2 = [[[[UINavigationController alloc] initWithNibName: nil bundle: nil] autorelease];
ctrl2.tabBarItem = [[[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemFavorites tag: 2] autorelease];
UINavigationController * ctrl3 = [[[[UINavigationController alloc] initWithNibName: nil bundle: nil] autorelease];
ctrl3.tabBarItem = [[[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemBookmarks tag: 3] autorelease];
UINavigationController * ctrl4 = [[[[UINavigationController alloc] initWithNibName: nil bundle: nil] autorelease];
ctrl4.tabBarItem = [[[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemContacts tag: 4] autorelease];
// This one won't work
UINavigationController * ctrl5 = [[[[UINavigationController alloc] initWithNibName: nil bundle: nil] autorelease];
ctrl5.tabBarItem = [[[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemMostRecent tag: 5] autorelease];
// This one will work
UIViewController * ctrl6 = [[[[UIViewController alloc] initWithNibName: nil bundle: nil] autorelease];
ctrl6.tabBarItem = [[[[UITabBarItem alloc] initWithTabBarSystemItem: UITabBarSystemItemDownloads tag: 6] autorelease];
tabBarController.viewControllers = [NSArray arrayWithObjects: ctrl1, ctrl2, ctrl3, ctrl4, ctrl5, ctrl6, nil];
[window addSubview: tabBarController.view];
[window makeKeyAndVisible];
}
- (void) dealloc
{
[tabBarController release];
[window release];
[super dealloc];
}
@end
user168654
source share