2009-06-04 87 views
0
-(void)mybuttonclick{ 
UGFloat p=120; 
    for(int i=0;i<3;i++){ 
     UIButton *aa = [UIButton buttonWithType:UIButtonTypeCustom]; 
     if(i==0){   
      NSString *name=[[NSString alloc][email protected]"ZERO"]; 
     }else if(i==1){ 
      NSString *name=[[NSString alloc][email protected]"ONE"]; 
     }else if(i==2){ 
      NSString *name=[[NSString alloc][email protected]"Two"]; 
     }else{ 
      NSString *name=[[NSString alloc][email protected]"Three"]; 
     } 
    [aa setFrame:CGRectMake(0.0f, 0.0f, 500.0f, 40.0f)]; 
    [aa setCenter:CGPointMake(100.0f,p)]; 
    [aa setBackgroundColor:[UIColor blueColor]]; 
    [aa addTarget:self action:@selector(fullscreen:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.window addSubview:aa]; 
    p=p+50; 
    } 
} 

//----------------fullscreen method-------------------- 
-(void) fullscreen:(id)sender{ 

    NSLog(@"button pressed on %@",[sender Stringvalue]); 
} 

这里我动态创建了3个UIButton。当我按下第一个按钮时,我想显示ZERO。当按第二个时,打印ONE ...然后Two,然后Three。我怎样才能做到这一点?我知道这可以使用选择器的关键工作,但我不知道如何。Uibutton事件

回答

1

你不在任何地方告诉按钮name。您可以在标题按钮标题中使用[aa setTitle:name forState:UIControlStateNormal];进行设置,然后在fullscreen:[sender currentTitle]之间进行访问。

如果您希望邮件独立于标题,您可以使用自己的UIButton的子类来存储邮件或为每个按钮设置不同的目标操作。

此外,您构建名称的方式很脆弱。像这样的东西可能会更好:

NSArray* names = [NSArray arrayWithObjects:@"ZERO", 
              @"ONE", 
              @"Two", 
              @"Three", 
              nil]; 
for (NSString* name in names) { 
    // Do stuff with name 
}