2009-06-04 93 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 
}