Как получить информацию об отправителе по делу здесь - PullRequest
0 голосов
/ 01 апреля 2012

Я создаю UIButtons внутри цикла, как показано ниже.

for(int i = 1; i <= count; i++){

        if(i ==1){
            UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(0, 10, 40, 40)];
            [btn1 setImage:image2 forState:UIControlStateNormal];
            [self addSubview:btn1];
            continue;
        }
        x = x + 40;
        y = y + 50; 
         UIButton *btn2 = [[UIButton alloc]initWithFrame:CGRectMake(x , y, 40, 40)];
        [btn2 setImage:image1 forState:UIControlStateNormal];
        [btn2 addTarget:self action:@selector(buttonPressed) 
       forControlEvents:UIControlEventTouchUpInside];

         [self addSubview:btn2];
    }

И я обрабатываю UIButton события, на которые нажали, как

-(void) buttonPressed{

}

Мне нужна информация о которойЯ нажал кнопку в методе обработки событий.Мне нужно получить кадр нажатой кнопки.Как я могу изменить этот код, чтобы получить информацию об отправителе.

Ответы [ 2 ]

4 голосов
/ 01 апреля 2012

Добавьте тег к своей кнопке, пока она создается, как btn.tag=i; и заново определите свой метод следующим образом

-(void) buttonPressed:(id)sender{
// compare  sender.tag to find the sender here
}
1 голос
/ 01 апреля 2012

Что вам нужно сделать, это добавить следующие строки в ваш код:

for(int i = 1; i <= count; i++)
{

    if(i ==1){
        UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(0, 10, 40, 40)];
        [btn1 setImage:image2 forState:UIControlStateNormal];

         [btn1 setTag:i];   // This will set tag as the value of your integer i;

        [self addSubview:btn1];
        continue;
    }
    x = x + 40;
    y = y + 50; 
     UIButton *btn2 = [[UIButton alloc]initWithFrame:CGRectMake(x , y, 40, 40)];
    [btn2 setImage:image1 forState:UIControlStateNormal];

    [btn2 setTag:i];   // also set tag here.
    [btn2 addTarget:self action:@selector(buttonPressed) 
   forControlEvents:UIControlEventTouchUpInside];

     [self addSubview:btn2];
}

А теперь измените свой IBAction следующим образом:

 -(void) buttonPressed: (id)sender
 {

  if(sender.tag==1) // determine which button was tapped using this tag property.
     {
         // Do your action..
     }
 }

Или вы можете сделать это следующим образом ...Таким образом, вы копируете объект, находящийся в отправителе, в этот UIBtton объект.

-(void) buttonPressed: (id)sender
 {

  UIButton *tempBtn=(UIButton *) sender; 
  if(tempBtn.tag==1) // determine which button was tapped using this tag property.
     {
         // Do your action like..
         tempBtn.backgroundColor=[UIColor blueColor];
         tempBtn.alpha=0.5;
     }
 }

Таким образом, в этом параметре sender он будет содержать UIButton, с которым вы взаимодействуете, и вы можете получить доступ к его свойствам.как тег, текст и т. д. Надеюсь, это поможет ..

...