2011-11-28 79 views
0

首先:对不起我的英文不好!使用UIButtons自定义TabBar

我有一个创建UIButton的类。 UIButton我添加一个UIView。在ViewController中我想添加这些自定义tabbar。这到目前为止效果很好。但是,addTarget存在一些问题:action:forControlEvents: - 如何从ViewController的类中运行实例方法?该类是NSObject类型的。我的代码:

TabBar *tabBar = [[TabBar alloc] init]; 
    [tabBar tabBarButton]; 
    [tabBar.home addTarget:tabBar action:@selector(switchView) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:tabBar.tabView]; 

这里是我的类:

@implementation TabBar 
@synthesize tabView, home, list, charts, favorits, more; 

-(void)tabBarButton{ 

    tabView = [[UIView alloc] initWithFrame:CGRectMake(0, 360, 320,56)]; 

    home = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 43, 56)]; 
    list = [[UIButton alloc] initWithFrame:CGRectMake(63, 0, 40, 56)]; 
    charts = [[UIButton alloc] initWithFrame:CGRectMake(123, 0, 49, 56)]; 
    favorits = [[UIButton alloc] initWithFrame:CGRectMake(192, 0, 66, 56)]; 
    more = [[UIButton alloc] initWithFrame:CGRectMake(278, 0, 42, 56)]; 

    [home setImage:[UIImage imageNamed:@"home.png"] forState:UIControlStateNormal]; 
    [list setImage:[UIImage imageNamed:@"liste.png"] forState:UIControlStateNormal]; 
    [charts setImage:[UIImage imageNamed:@"charts.png"] forState:UIControlStateNormal]; 
    [favorits setImage:[UIImage imageNamed:@"favorites.png"] forState:UIControlStateNormal]; 
    [more setImage:[UIImage imageNamed:@"more.png"] forState:UIControlStateNormal]; 

    home.tag = 1; 
    list.tag = 2; 
    charts.tag = 3; 
    favorits.tag = 4; 
    more.tag = 5; 


    [tabView addSubview:home]; 
    [tabView addSubview:list]; 
    [tabView addSubview:charts]; 
    [tabView addSubview:favorits]; 
    [tabView addSubview:more]; 

} 

-(void)switchView{ 
    NSLog(@"hi"); 
} 

当我启动应用程序,当我按下一个按键立即崩溃。

回答

1

如果您收到一个无法识别的选择错误,你可以尝试:

[tabBar.home addTarget:tabBar action:@selector(switchView:) forControlEvents:UIControlEventTouchUpInside]; 

注意后面的行动冒号:@selector(SWITCHVIEW :)