UITabBar中的UITabBarItems在我单击项目后显示,而不是在应用程序启动时

Ols*_*lsi 11 iphone uitabbarcontroller uitabbaritem ios

我写的这个应用程序有一个问题.

我正在UITabBar我的应用程序窗口中设置并在视图文件中设置图标.但是,当我运行应用程序时,第一个图标显示(因为视图已加载,我猜),其他图标在我点击它们之前不会显示.

我需要用self.tabBarItem其他方法实现viewDidLoad吗?

在此先感谢大家!

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    tabBar = [[UITabBarController alloc] init];

    SubscriptionsController *subscriptionsController = [[SubscriptionsController alloc] init];
    FavoritesController  *favoritesController  = [[FavoritesController  alloc] init];
    CategoriesController *categoriesController  = [[CategoriesController alloc] init];
    TagsController   *tagsController    = [[TagsController   alloc] init];
    HelpScreenController *helpScreenController  = [[HelpScreenController alloc] init];

    tabBar.viewControllers = [NSArray arrayWithObjects:
        subscriptionsController, 
        favoritesController, 
        categoriesController, 
        tagsController, 
        helpScreenController, 
        nil
        ];

    [window addSubview:tabBar.view];

    // Override point for customization after application launch.
    [window makeKeyAndVisible];
    return YES;
}

//The View

- (void)viewDidLoad {
    [super viewDidLoad];
    tabIcon = [[UITabBarItem alloc] initWithTitle:@"Abonime" image:[UIImage imageNamed:@"subscr.png"] tag:0];
    self.tabBarItem = tabIcon;
    [tabIcon release];
}
Run Code Online (Sandbox Code Playgroud)

Cos*_*que 13

我认为你应该在视图控制器的指定初始化程序中设置tabBarItem属性(从你的代码判断,它必须是-init每个控制器).事实上,标签栏控制器非常智能,可以根据需要加载视图,也就是说,应该在viewDidLoad发送之前设置tabBarItem属性.

此外,您似乎泄漏了所有视图控制器.要解决此问题,请执行以下操作:

SubscriptionsController *subscriptionsController = [[[SubscriptionsController alloc] init] autorelease];
Run Code Online (Sandbox Code Playgroud)