2010-07-16 3 views
2

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

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

-(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]; 

} 

см ниже изображения (здоровье, развлечения и деньги Часы являются три кнопки)

Image http://www.freeimagehosting.net/uploads/6b3daab12f.png

и

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

Примечание: (как, табуляция и сегментированное управление)

При нажатии первой кнопки и задании фонового изображения в выбранном состоянии и нажатии второй кнопки, первые кнопки должны быть отменены. Итак, как я могу поддерживать выбранное состояние, пока не будет нажата другая кнопка.

Спасибо заранее.

ответ

4

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

INIT:

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

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

  • Снимаем выделение с ранее выбранной кнопки (поиск его это тег [вид 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; 
} 
+1

+1, kovpas, спасибо за подробный ответ. Он работает нормально. Большое спасибо... – Pugal

 Смежные вопросы

  • Нет связанных вопросов^_^