【问题标题】:Change image of UIButton on select or unselect在选择或取消选择时更改 UIButton 的图像
【发布时间】:2014-12-05 06:24:21
【问题描述】:

我希望在我的 iOS 应用程序中,用户可以在单击 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;
             }];
         }
   }

【问题讨论】:

    标签: ios objective-c uibutton uipickerview ibaction


    【解决方案1】:

    斯威夫特 4

    在声明按钮的地方添加这个

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

    【讨论】:

      【解决方案2】:

      要为按钮设置图像,请使用 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;
                          }];
                      }
                   }
      

      【讨论】:

      • @Ramesh 谢谢我已经应用了你的代码,但它不符合我的要求。同样的事情正在发生。
      【解决方案3】:

      我猜你没有改变按钮的状态。试试这个...

      - (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】:

        要在不同的按钮状态下设置不同的图像,请使用 - (void)setImage:(UIImage *)image forState:(UIControlState)state;

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

        【讨论】:

          【解决方案5】:

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

          按钮的声明位置

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多