Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在选择或取消选择时更改UIButton的图像_Ios_Objective C_Uibutton_Uipickerview_Ibaction - Fatal编程技术网

Ios 在选择或取消选择时更改UIButton的图像

Ios 在选择或取消选择时更改UIButton的图像,ios,objective-c,uibutton,uipickerview,ibaction,Ios,Objective C,Uibutton,Uipickerview,Ibaction,我希望在我的iOS应用程序中,用户可以单击ui按钮选择一些字段 我希望当用户点击ui按钮时选择字段时,按钮的图像应更改并打开我的MMPickerView,当用户再次点击ui按钮时,应取消选中并在ui按钮中显示上一个图像,此时不要打开MMPickerView 这是我的代码: - (IBAction)showPickerViewButtonPressed:(id)sender { if( (_button.selected = !_button.selected)) {

我希望在我的iOS应用程序中,用户可以单击
ui按钮
选择一些字段

我希望当用户点击
ui按钮时选择字段时,按钮的图像应更改并打开我的
MMPickerView
,当用户再次点击
ui按钮时,应取消选中并在
ui按钮中显示上一个图像,此时不要打开
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;
             }];
         }
   }

要设置按钮的图像,请使用setbackground图像而不是setimage

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

UIImage*bimage=[UIImage imagename:@“play_select.jpg”];
[_按钮设置图像:状态的双图像:UIControlStateSelected];
[_按钮设置图像:状态的双图像:uicontrol状态突出显示]


其中按钮被声明

以在不同的按钮状态下设置不同的图像使用
-(void)setImage:(UIImage*)图像状态:(UIControlState)状态


在您的代码中,if语句
(\u button.selected=!\u button.selected)
将始终为true,因此else部分将永远不会运行。

我猜您没有更改按钮的状态。试试这个

- (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];
斯威夫特4

将此按钮添加到声明的位置

let bimage=UIImage(名为:“play_select.jpg”)
button.setImage(双页面,用于:。已选定)

button.setImage(bimage,for:.突出显示)

@Ramesh谢谢我应用了你的代码,但它不符合我的要求。同样的事情也在发生。
  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];