[英]iOS how do I reset button images?
我有几个按钮,当按下它们时,它们会从一个普通按钮变为带有刻度线的按钮。 我的问题是,当按下一个单独的按钮时,我无法使打勾的按钮回到未折叠的按钮。 这有可能吗?
这是我的按钮:
- (IBAction)pickCat:(UIButton *)sender {
[self deselectAllButtons];
((UIButton *)sender).selected = true;
UIImage *btnImage1 = [UIImage imageNamed:@"white - on.png"];
[sender setImage:btnImage1 forState:UIControlStateNormal];
self.catLabel.text = @"WHITE (Hi-Po)";
}
- (IBAction)pickCatb:(UIButton *)sender {
[self deselectAllButtons];
((UIButton *)sender).selected = true;
UIImage *btnImage1 = [UIImage imageNamed:@"red - on.png"];
[sender setImage:btnImage1 forState:UIControlStateNormal];
self.catLabel.text = @"RED (Significant)";
}
- (IBAction)pickCatc:(id)sender {
UIImage *btnImage1 = [UIImage imageNamed:@"yellow - on.png"];
[sender setImage:btnImage1 forState:UIControlStateNormal];
self.catLabel.text = @"YELLOW (Serious)";
}
- (IBAction)pickCatd:(id)sender {
UIImage *btnImage1 = [UIImage imageNamed:@"green - on.png"];
[sender setImage:btnImage1 forState:UIControlStateNormal];
self.catLabel.text = @"GREEN (Important)";
}
- (void)deselectAllButtons
{
// assuming you have a reference to all your buttons
self->Btn1.selected = false;
self->Btn2.selected = false;
}
我喜欢为每种状态设置不同的图像:正常和选中。 看起来您正在使用Interface Builder,并且很容易为正常和选定状态的按钮设置不同的图像。
然后,您可以在代码中执行以下操作:
- (IBAction)pickImage:(id)sender {
[self deselectAllButtons];
sender.selected = true;
self.locLabel.text = @"Red";
}
- (IBAction)pickImageb:(id)sender {
[self deselectAllButtons];
sender.selected = true;
self.locLabel.text = @"Red";
}
- (void)deselectAllButtons
{
// assuming you have a reference to all your buttons
self.btn1.selected = false;
self.btn2.selected = false;
...
}
如果希望能够在将一个按钮更改为选中的图像之前重设所有按钮,则必须参考要影响的其他所有内容。 如果想花哨的话,请查看插座集合,以便您可以轻松地从IB文件中遍历按钮阵列,并将其选择状态设置为false。
更新:
这可能是您的代码的外观:
- (IBAction)pickCat:(UIButton *)sender {
[self deselectAllButtons];
// no need to cast since you changed your method signature.
// the system now expects sender to be a button
// ((UIButton *)sender).selected = true;
sender.selected = true;
// no need to set the image explicitly. if you did things correctly
// in IB, you've already told the button which image to use when
// selected, and which image to use when not (default). when you set
// the line above (sender.selected = true), that will tell the button
// to go use the image that you added to the button's selected state in IB
// UIImage *btnImage1 = [UIImage imageNamed:@"white - on.png"];
// [sender setImage:btnImage1 forState:UIControlStateNormal];
self.catLabel.text = @"WHITE (Hi-Po)";
}
- (IBAction)pickCatb:(UIButton *)sender {
[self deselectAllButtons];
sender.selected = true;
self.catLabel.text = @"RED (Significant)";
}
- (IBAction)pickCatc:(id)sender {
[self deselectAllButtons];
sender.selected = true;
self.catLabel.text = @"YELLOW (Serious)";
}
- (IBAction)pickCatd:(id)sender {
[self deselectAllButtons];
sender.selected = true;
self.catLabel.text = @"GREEN (Important)";
}
- (void)deselectAllButtons
{
// 2 things:
// 1) I'm not sure about self->Btn1. why not self.Btn1?
// 2) it looks like you have 4 buttons (catA, catB, catC, catD). if so, you need to set the selected state for all of them to false
self->Btn1.selected = false;
self->Btn2.selected = false;
self->Btn3.selected = false;
self->Btn4.selected = false;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.