2014-10-10 2 views
2

Я хочу, чтобы в моем приложении iOS пользователь мог выбрать какое-либо поле при нажатии на UIButton.Изменить изображение UIButton on select or unselect

Я хочу, когда пользователь выбирает поле на щелчок UIButton, изображение кнопки должно измениться и открыть мой MMPickerView и когда пользователь щелкает снова UIButton должен получить невыбранные и отобразить предыдущее изображение в UIButton и не открывать MMPickerview в это время.

Это мой код:

- (IBAction)showPickerViewButtonPressed:(id)sender { 
     if((_button.selected = !_button.selected)) 
     { 
      UIImage *bimage=[UIImage imageNamed: @"play.jpg"]; 
      [_button setImage:bimage forState:UIControlStateNormal]; 
     } 
     else 
     { 
      [MMPickerView showPickerViewInView:self.view 
         withStrings:_stringsArray 
         withOptions:@{MMbackgroundColor: [UIColor blackColor], 
            MMtextColor: [UIColor whiteColor], 
            MMtoolbarColor: [UIColor blackColor], 
            MMbuttonColor: [UIColor whiteColor], 
            MMfont: [UIFont systemFontOfSize:18], 
            MMvalueY: @3, 
            MMselectedObject:_selectedString} 
         completion:^(NSString *selectedString) { 

          _label.text = selectedString; 
          _selectedString = selectedString; 
      }]; 
     } 
    } 

ответ

1

Для установки изображения на кнопку использовать setbackground изображение вместо setimage

[<buttoninstane> setBackgroundImage:<#(UIImage *)#> forState:UIControlStateNormal]; 
[<buttoninstane> setBackgroundImage:<#(UIImage *)#> forState:UIControlStateSelected]; 

Написать код выше, где объявляется кнопка

И в действии кнопки используйте приведенный ниже отредактированный код

- (IBAction)showPickerViewButtonPressed:(id)sender { 
     if(_button.selected){ 
[_button setSelected:NO]; 
      } 
     else{ 
[_button setSelected:YES]; 
      [MMPickerView showPickerViewInView:self.view 
        withStrings:_stringsArray 
        withOptions:@{MMbackgroundColor: [UIColor blackColor], 
           MMtextColor: [UIColor whiteColor], 
           MMtoolbarColor: [UIColor blackColor], 
           MMbuttonColor: [UIColor whiteColor], 
           MMfont: [UIFont systemFontOfSize:18], 
           MMvalueY: @3, 
           MMselectedObject:_selectedString} 
        completion:^(NSString *selectedString) { 

         _label.text = selectedString; 
         _selectedString = selectedString; 
        }]; 
       } 
      } 
+0

@ Рамеш спасибо я применил ваш код, но его не отвечают моим requirements.Same вещи происходят. – Daljeet

+0

Отредактировано код, сейчас –

3

UIImage *bimage=[UIImage imageNamed: @"play_select.jpg"]; [_button setImage:bimage forState:UIControlStateSelected]; [_button setImage:bimage forState:UIControlStateHighlighted];

где кнопка объявлен

1

Чтобы установить другое изображение в другом состоянии кнопки использовать - (void)setImage:(UIImage *)image forState:(UIControlState)state;

В своем коде, если заявление (_button.selected = !_button.selected) всегда будет истинным, так что остальные части никогда не будет работать ,

2

Я думаю, вы не меняете состояние кнопки. Попробуйте это ...

- (IBAction)showPickerViewButtonPressed:(id)sender 
{ 
    if ([_button isSelected]) 
    { 
     _button.selected=NO; 
    } 
    else 
    { 
     _button.selected=YES; // change button's state 
      [MMPickerView showPickerViewInView:self.view 
        withStrings:_stringsArray 
        withOptions:@{MMbackgroundColor: [UIColor blackColor], 
           MMtextColor: [UIColor whiteColor], 
           MMtoolbarColor: [UIColor blackColor], 
           MMbuttonColor: [UIColor whiteColor], 
           MMfont: [UIFont systemFontOfSize:18], 
           MMvalueY: @3, 
           MMselectedObject:_selectedString} 
        completion:^(NSString *selectedString) { 

         _label.text = selectedString; 
         _selectedString = selectedString; 
        // _button.selected=YES; change button's state here If you want to change state after completion. 
        }]; 
    } 
} 

И напишите этот код, где вы указали свою кнопку.

UIImage *bSelectedimage=[UIImage imageNamed: @"your image name for selected state"]; 
    UIImage *bimage=[UIImage imageNamed: @"your image name for default state"]; 
[_button setImage:bSelectedimage forState:UIControlStateSelected]; 
[_button setImage:bimage forState:UIControlStateNormal]; 
0

Swift 4

добавить это где кнопка объявлен

let bimage = UIImage(named: "play_select.jpg") button.setImage(bimage, for: .selected) button.setImage(bimage, for: .highlighted)

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