Выделите UIB-кнопки, созданные динамически? - PullRequest
1 голос
/ 17 декабря 2011

В моем приложении я создал 20 кнопок с прокруткой, теперь проблема в том, что я не смог выделить выбранную кнопку.

Мое намерение - показать нажатую кнопку другим способом, чем обычно. При нажатии другой кнопки предыдущая должна стать нормальной:

UIButton *Abutton = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
    [Abutton setTag:i-1];
    Abutton.frame = CGRectMake(30.0, 0+j, 40.0, 40.0);
    [Abutton setTitle:@"" forState:UIControlStateNormal];
    Abutton.backgroundColor = [UIColor clearColor];
    [Abutton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal ];
    UIImage *buttonImageNormal = [UIImage imageNamed:@"image1.png"];
    UIImage *strechableButtonImageNormal = [buttonImageNormal stretchableImageWithLeftCapWidth:12 topCapHeight:0];
    [Abutton setBackgroundImage:strechableButtonImageNormal forState:UIControlStateNormal];
    UIImage *buttonImagePressed = [UIImage imageNamed:@"image2.png"];
    UIImage *strechableButtonImagePressed = [buttonImagePressed stretchableImageWithLeftCapWidth:12 topCapHeight:0];
    [Abutton setBackgroundImage:strechableButtonImagePressed forState:UIControlStateHighlighted];
    [Abutton addTarget:self action:@selector(buttonpressed:) forControlEvents:UIControlEventTouchUpInside];

    [scrollview addSubview:Abutton];

Наконец-то я создал метод для Abutton, нажатый так:

-(IBAction)buttonpressed:(id)sender{
         Abutton.highlighted=YES;
         //.....
         //.....
}

Если сделать это так, то будет выделена только последняя созданная кнопка. Это не совсем то, что я хотел.

Ответы [ 2 ]

1 голос
/ 19 декабря 2011

Я думаю, вы должны заменить свой текущий код для нажатой кнопки:

    -(IBAction)buttonpressed:(id)sender{
UIButton *b = (UIButton *)sender;
             b.highlighted = YES;
             //.....
             //.....
    }

В вашем примере вы выделите " AButton ". Этот код выделяет нажатую кнопку.

0 голосов
/ 17 декабря 2011

Решение 1: Создайте NSSet со ссылками на все кнопки. В вашем методе buttonPressed вызовите makeObjectsPerformSelector на кнопках NSSet, установив их в невыделенное состояние.

Решение 2: Используйте UISegmentedControl. Это похоже на то, что должен делать в этом случае в любом случае.

...