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