Ios 在选择或取消选择时更改UIButton的图像
我希望在我的iOS应用程序中,用户可以单击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)) {
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];