我在xcode中找到了一个名为imageForState的属性,但是无法让它做我想做的事。按下按钮时,我想根据按钮的图像执行一段代码。
- (IBAction)favButton:(UIButton *)sender {
NSString *currentImage = [sender imageForState:UIControlStateNormal];
if([currentImage isEqualToString:@"already_fav"])
{
// execute code
}
}
但是,我收到错误:
Incompatible pointer types initializing NSString _strong with an expression type of UIImage
有人可以告诉我们如何解决这个问题吗?
答案 0 :(得分:9)
我确信您无法将字符串与图像进行比较。但是有一个解决方案。您所要做的就是为您想要比较的图像设置标记,并设置您要比较的图像的标记。
image1.tag = 1;
image.tag =1;
if(image1.tag == image.tag) {
// execute code
}
应该有所帮助,我希望确实如此。
所以,对于这个练习,我会告诉你。将NSString更改为UIImage
UIImage *currentImage = [sender imageForState:UIControlStateNormal];
currentImage.tag = 1;
wantedImage.tag = 1;
if(currentImage.tag == wantedImage.tag) {
// do something
}
希望这有助于你:)
答案 1 :(得分:4)
创建UIImage时,它只是一个图像,没有附加字符串值。该名称不由UIImage对象承载。
如果是我(这不是唯一的解决方案,只是另一个建议),我会创建单独的UIImage对象(取决于我们在这里讨论的数量),因为这应该是可检查的,而字符串不是。
例如:
UIImage *image1 = [UIImage imageNamed:@"randomName"];
UIImage *image2 = [UIImage imageNamed:@"anotherRandomName"];
[myButton setImage:image2 forState:UIControlStateNormal];
if ([myButton imageForState:UIControlStateNormal] == image1) {
NSLog(@"The button shows image 1 for normal state");
}
else if ([myButton imageForState:UIControlStateNormal] == image2) {
NSLog(@"The button shows image 2 for normal state");
}
else {
NSLog(@"Error!!!!!!! :D");
}
答案 2 :(得分:1)
您无法将图像另存为字符串
t
UIImage *currentImage = [sender imageForState:UIControlStateNormal];
比检查:
if(currentImage == [UIImage imageNamed:@"already_fav"])
答案 3 :(得分:1)
我这样做是为了在按钮上切换声音/ noSound图像:
- (IBAction)soundAction:(id)sender {
UIImage *sound = [UIImage imageNamed:@"sound"];
UIImage *noSound = [UIImage imageNamed:@"noSound"];
if ([[sender currentImage] isEqual:sound]) {
NSLog(@"IF SOUND IMAGE");
[sender setImage:noSound forState:UIControlStateNormal];
//your code
} else if([[sender currentImage] isEqual:noSound]) {
NSLog(@"IF NO SOUND IMAGE");
[sender setImage:sound forState:UIControlStateNormal];
//your code
}
}