2014-10-10 98 views
2

我想在我的iOS應用程序用戶可以選擇一些領域上點擊UIButton更改UIButton的圖像選擇或取消選擇

我當用戶選擇的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 2014-10-10 07:05:14

+0

編輯代碼,現在檢查 – 2014-10-10 08:47:01

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;

在代碼中的if語句(_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

斯威夫特4

,其中按鈕被宣佈

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