切换按钮图像
Posted
技术标签:
【中文标题】切换按钮图像【英文标题】:Toggle Button Image 【发布时间】:2013-09-17 01:34:58 【问题描述】:我有多个按钮。
它们都加载到 viewDidLoad 中。我想要它,所以一旦按下一个按钮,它就会变成另一个图像。
所以 Img1 通过 viewDidload 加载,然后一旦被按下,它就会转到 Img2
这是我目前尝试过的代码:
在viewdidload中:
btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
[btn1 setFrame:CGRectMake(367, 117, 97, 25)];
[btn1 setImage:[UIImage imageNamed:@"img1.png"] forState:UIControlStateNormal];
[btn1 addTarget:self action:@selector(playSound:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn1];
在 ibaction 中(我尝试过,但我在猜测)
-(IBAction)ButtonAction
if (btn1==0)
btn1=1;
[btn1 setImage:[UIImage imageNamed:@"img1.png"] forState:UIControlStateNormal];
else
[btn1 setImage:[UIImage imageNamed:@"img2.png"] forState:UIControlStateNormal];
btn1=0;
感谢您的帮助
【问题讨论】:
【参考方案1】:您需要确保将您的UIButton
连接到正确的选择器。另外,我会使用@property
或全局/实例变量来跟踪当前在UIButton
中的图像。下面是一些可以解决问题的代码:
//... in @interface
@property (nonatomic, strong) NSString *btn1ImageName;
- (void)viewDidLoad
[super viewDidLoad];
// ...
self.btn1ImageName = @"img1.png";
btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
[btn1 setFrame:CGRectMake(367, 117, 97, 25)];
[btn1 setImage:[UIImage imageNamed:self.btn1ImageName] forState:UIControlStateNormal];
[btn1 addTarget:self action:@selector(toggleImage:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:btn1];
- (void)toggleImage:(UIButton *)btn1
self.btn1ImageName = ([self.btn1ImageName isEqualToString:@"img1.png"]) ? @"img2.png" : @"img1.png";
[btn1 setImage:[UIImage imageNamed:self.btn1ImageName] forState:UIControlStateNormal];
【讨论】:
【参考方案2】:if (btn1==0)
我不明白那部分。
一个简单的解决方案是为选定和未选定状态设置两个不同的图像。
btn1.selected = YES,会自动选择选中的按钮图片。 btn1.selected = NO,将自动选择未选中的按钮图像。
【讨论】:
以上是关于切换按钮图像的主要内容,如果未能解决你的问题,请参考以下文章