注意这里是:Tab Bar 不是Tab Bar Controller. Tab bar是继承UIView,所以可以添加到ViewController里。是View就可以add到另一个View上去。Tab Bar Controller是新建View视图。

XX.h 里需要定义UITabBar,并且要引用协议 UITabBarDelegate.

@interface LoginViewController :UIViewController<UITabBarDelegate>

{

    UITabBar *tabbar;

}

@property (nonatomic, retain) UITabBar *tabbar;

 

XX.m

@synthesize tabbar;

- (void)viewDidLoad

{

    //加载Tab bar

    CGRect footFrame = CGRectMake(0, 420, 320, 60);

    tabbar = [[UITabBar alloc]initWithFrame:footFrame];

    

    UITabBarItem *item1 = [[UITabBarItem alloc]initWithTabBarSystemItem:1 tag:0];

    UITabBarItem *item2 = [[UITabBarItem alloc]initWithTabBarSystemItem:2 tag:1];

    NSArray *items = [[NSArray alloc]initWithObjects:item1,item2, nil];

    [tabbar setItems:items animated:YES];

    [item1 release];

    [item2 release];

    [items release];

    [self.view addSubview:tabbar];

    tabbar.delegate = self;//指定其代理方法,不然方法不起作用

    [tabbar release]; 

}

- (void)tabBar:(UITabBar *)tabbar didSelectItem:(UITabBarItem *)item 

{

    NSLog(@"Selected is %d",item.tag);

    NSString *msg = [[NSString alloc]initWithFormat:@"selected is %d",item.tag];

    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"a" message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];

    [alert show];

    [msg release];

    [alert release];

}

 

gwesley 2011-08-14 08:57
给每个item添加一个tag
然后在此方法中 如下判断
switch(item.tag) {
case 0:

break
case 1:

break


patrick_ren 2011-08-14 10:44
- (void)tabBar:(UITabBar *)tb didSelectItem:(UITabBarItem *)item
这个方法有要求一定要写在那儿吗?

patrick_ren 2011-08-14 17:10
好像没发调用啊,是不是还要在viewdidload里写东西啊?

exphinx 2011-08-14 18:26
- tabBar:didSelectItem: 是UITabBar的delegate方法,你给它设定delegate了吗?

patrick_ren 2011-08-14 19:37
设定了,在头文件里,对吗?

patrick_ren 2011-08-14 20:22
解决了,忘记写tb.delegate = self了~谢谢各位~