2014-10-10 89 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)