Ios 选择和取消选择时设置按钮图像

Ios 选择和取消选择时设置按钮图像,ios,uibutton,Ios,Uibutton,我只是尝试将按钮图像设置为在IBAction中切换到不同的图像: if ([sender isSelected]) { //1 UIImage *unselectedImage = [[UIImage alloc]initWithContentsOfFile:@"icon_checkbox_up"]; [sender setImage:unselectedImage forState:UIControlStateSelected]; [sender setSelected

我只是尝试将按钮图像设置为在IBAction中切换到不同的图像:

if ([sender isSelected]) {
//1
    UIImage *unselectedImage = [[UIImage alloc]initWithContentsOfFile:@"icon_checkbox_up"];
    [sender setImage:unselectedImage forState:UIControlStateSelected];
    [sender setSelected:NO];
}
else {
//2
    UIImage *unselectedImage = [[UIImage alloc]initWithContentsOfFile:@"icon_checkbox_down"];
    [sender setImage:unselectedImage forState:UIControlStateNormal];
    [sender setSelected:YES];
}

当我点击按钮时,图像会相应地改变(在注释2下),再次按下按钮后,图像就会消失。我不知道这是为什么。我已尝试uicontrol状态选择和uicontrol状态正常。我遗漏了什么吗?

如果您的文件名没有错,您可以这样尝试。希望能有帮助

[buttn addTarget:self action:@selector(Selected) forControlEvents:UIControlEventTouchDown];
[buttn addTarget:self action:@selector(Unselected) forControlEvents:UIControlEventTouchUpInside];
[buttn addTarget:self action:@selector(Unselected) forControlEvents:UIControlEventTouchUpOutside];

-(void)Selected
{
    UIImage *unselectedImage = [[UIImage alloc]initWithContentsOfFile:@"icon_checkbox_up"];
    [buttn setImage:unselectedImage forState:UIControlStateSelected];
    [buttn setSelected:NO];
}

-(void)Unselected
{
    UIImage *unselectedImage = [[UIImage alloc]initWithContentsOfFile:@"icon_checkbox_down"];
    [buttn setImage:unselectedImage forState:UIControlStateNormal];
    [buttn setSelected:YES];
}
将代码更改为:

if ([sender isSelected]) {
    [sender setSelected:NO];
}
else {
    [sender setSelected:YES];
}

并为每个uicontrol状态设置XIB文件中的图像。

@Stuart如果您是正确的,它为nil,应命名为selectedImage。你知道是什么引起的吗?如果你在方法中设置一个断点并逐步执行会发生什么?
UIImage
实例是否为
nil
?另外,请注意,在设置按钮期间,只需为每个状态设置一次图像。更改选定状态将导致图像更改为为为该状态设置的图像。是的,通过为给定状态的选定/未选定图像设置
nil
,您的意思是该按钮不应具有该状态的图像。我怀疑指定的图像文件名有误-它们是否有文件扩展名(例如“.png”)?我使用的是image.xcsets,因此不需要.png?我还仔细检查了名字。正确。必须使用
UIImage
+imageNamed:
方法从.xcsets文件创建图像。