2011-12-27 104 views
0

因此,我有一个UIViewController,该视图中有UITabBar。我想拉下JSON并决定要将哪些标签添加到标签栏,因此我需要能够在运行时选择标签。我想用UITabBarController setViewControllers:animated:方法添加一个视图控制器列表。然而,因为我在视图控制器中这样做,我不知道如何访问标签栏的视图控制器。这里是我的代码...将UITabBarItem添加到UIViewController中的UITabBar中

#import <UIKit/UIKit.h> 

@interface HealthTicketTabController : UIViewController <UITabBarDelegate, UITabBarControllerDelegate> { 
    NSArray *viewControllers; 
    IBOutlet UITabBar *tabBar; 
    UIViewController *selectedViewController; 

    // How do I link this the the tabBar's view controller??? 
    UITabBarController *tabBarController; 
} 

@property (nonatomic, retain) NSArray *viewControllers; 
@property (nonatomic, retain) IBOutlet UITabBar *tabBar; 
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController; 
@property (nonatomic, retain) UIViewController *selectedViewController; 

@end 

来源

- (id)init 
{ 
    self = [super initWithNibName:@"HealthTicketTabView" bundle:nil]; 
    if (self) 
    { 
     //Controllers for the tab view 
     HealthCardController *card = [[HealthCardController alloc] init]; 
     MedicalExpensesController *medical = [[MedicalExpensesController alloc] init]; 

     //Tab bar items to be displayed in the tab bar 
     card.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemMostViewed tag:0]; 
     medical.tabBarItem = [[UITabBarItem alloc] initWithTabBarSystemItem:UITabBarSystemItemMostViewed tag:1]; 

     NSArray *array = [[NSArray alloc] initWithObjects:card, medical, nil]; 

     //Set the tab bar's view controllers to the list 
     tabBarController.viewControllers = [NSArray arrayWithObjects:card, medical, nil]; 

     [array release]; 
     [card release]; 
     [medical release]; 
    } 

    return self; 
} 

回答

1

发现,因为我使用的是UIViewController来控制UITabBar我需要将标签栏的代理设置为当前的UIViewController并处理当前控制器中的标签事件。

添加TabBarItems的TabBar

[self.tabBar setItems: tabBarItems animated:TRUE]; 

ViewControllers之间切换

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
{ 
    UIViewController *temp = [viewControllers objectAtIndex:item.tag]; 
    [self.selectedViewController.view removeFromSuperview]; 
    [self.view addSubview:temp.view]; 
    self.selectedViewController = temp; 
} 
1

的UIViewController有tabBarController财产了。你的头文件中不需要一个。这是你如何访问UITabBarController。