Как я могу сохранить выбранное состояние в кнопке в iPhone - PullRequest
2 голосов
/ 16 июля 2010

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

У меня есть три кнопки в представлении прокрутки,

 -(IBAction) Button1 : (id) sender
 {  
    // btn1.selected = YES;
          [btn1 setImage:[UIImage imageNamed:@"first.png"]  forState:UIControlStateSelected];

 }

 -(IBAction) Button2 : (id) sender
 {  
    // btn2.selected = YES;
        [btn2 setImage:[UIImage imageNamed:@"second.png"]  forState:UIControlStateSelected];

 }

 -(IBAction) Button3 : (id) sender
 {
   // btn3.selected = YES;
       [btn3 setImage:[UIImage imageNamed:@"three.png"]  forState:UIControlStateSelected];

 }

см. Изображение ниже (три кнопки «Здоровье», «Развлечения» и «Денежный дозор»)

Изображение http://www.freeimagehosting.net/uploads/6b3daab12f.png

и

Img http://www.freeimagehosting.net/uploads/b6e0f234dc.png

Примечание: (Like, Tabbar и Segmented control)

Если щелкнуть первую кнопку и установить фоновое изображение в выбранном состоянии, а затем нажать вторую кнопку, то первые кнопки должны быть отменены. Так, как я могу сохранить выбранное состояние, пока не нажата другая кнопка.

Заранее спасибо.

1 Ответ

4 голосов
/ 16 июля 2010

Я решил эту задачу следующим образом:

метод инициализации:

  • Создание количества кнопок с определенными изображениями для нормального и выбранного состояния.
  • Назначитьтег для каждой кнопки (например, для i-й кнопки тег 1000 + i).
  • Назначение IBAction для каждой кнопки.

метод действия:

  • Удалить выделение из ранее выбранной кнопки (поиск по ее тегу с помощью метода [view viewWithTag:])
  • Выбрать отправителя.
  • Сохранить тег отправителя.

Вот код:

- (void)init {

....INITIALIZE SCROLLVIEW HERE.....

    for ( int i = 0; i < 10; i++ ) {
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

        [btn setFrame:.....];
        [btn setImage:_IMAGE_ forState:UIControlStateNormal];
        [btn setImage:_IMAGE2_ forState:UIControlStateSelected];
        [btn setTag:i + 1000];

        [btn addTarget:self action:@selector(setSelectedButton:) forControlEvents:UIControlEventTouchUpInside];

        [self addSubview:btn];
    }
}

- (IBAction)setSelectedButton:(id)sender {
    [self setSelectedButtonByIndex:((UIButton *)sender).tag - 1000];
}

- (void)setSelectedButtonByIndex:(NSInteger)index {
    if ( selectedElemId >= 0 ) {
        UIButton *btn = (UIButton *)[self viewWithTag:selectedElemId + 1000];
        [btn setSelected:NO];
    }

    UIButton *btn = (UIButton *)[self viewWithTag:index + 1000];
    [btn setSelected:YES];

    selectedElemId = btn.tag - 1000;
}
...