UIB кнопка и проблема действий - PullRequest
0 голосов
/ 27 июля 2011

Я создаю некоторую кнопку UI динамически. И пользователь, щелкнув любую из кнопок, отобразит что-то (например: разные виды). Таким образом, я успешно сделал кнопки, получить теги. Но в методе IBAction ниже, потому что все эти кнопки создаются динамически. Поэтому я не могу использовать оператор if, else if для отображения представления на основе номера тега. Я думаю об использовании петель? есть идеи?

Вот мой код:

NSMutableArray *buttonsArray = [[NSMutableArray alloc] initWithObjects:nil];

for(int i = 0; i < [someArray count]; i++)
{
      button = [[UIButton alloc] initWithFrame:CGRectMake(btnX,btnY,btnW,btnH)];

    button.tag = i;

    [buttonsArray addObject:button];

    [[buttonsArray objectAtIndex:i] addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

    button.titleLabel.text = [NSString stringWithFormat:@"Click it"];

    [self.view addSubview:button];

    btnY = btnY + 120;
}

`-(IBAction) buttonPressed:(id)sender `
{

    UIButton *btn = (UIButton *)sender;
    NSLog(@"%ld", btn.tag);

      //Don't know the number of buttons, so this is not gonna work
    if( btn.tag == 1)
    {
            //do something
    }
        if( btn.tag == 2)
    {
            //do something
    }
    if( btn.tag == 3)
    {
            //do something
    }
    if( btn.tag == 4)
    {
            //do something
    }

}

Ответы [ 3 ]

0 голосов
/ 27 июля 2011

В вашем коде все в порядке, кроме двух вещей.

(1) Измените координаты кнопок, чтобы получить различное положение для всех кнопок в представлении.

(2) Измените следующий код:

[[buttonsArray objectAtIndex:i] addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

с этим кодом:

[button addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];

Дайте мне знать, если потребуется дополнительная помощь.

0 голосов
/ 27 июля 2011
Цикл

- не идеальное решение, я думаю ... согласен с Дженнисом ... используйте переключатель вместо оператора if else ... если вы хотите использовать цикл, попробуйте:

-(IBAction) buttonPressed:(id)sender{
UIButton *selectedbtn = (UIButton *)sender;
for (UIButton *bttn in buttonsArray) {       
    if ([bttn.tag == selectedbtn.tag ) {
        //do something
    }
}

}

0 голосов
/ 27 июля 2011

вы получаете Multiple UIbutton?Потому что твои X и Y одинаковы для всех ..

...