嘿,我正在编写一个函数,处理我的应用程序中的收藏夹,以及更改收藏夹按钮的图像。我想更改另一个UIScrollView DoubleScrollLeft
中相应按钮的图像。
下面的代码有效但是当我试图喜欢标记为"0"的第一个按钮时,我会得到以下错误,这是有原因的吗?(其余工作)。
-[UIScrollView setBackgroundImage:forState:]:无法识别的选择器发送到实例0x14e3b0
此外,一旦图像发生变化,它会向右按下按钮的标题,我需要重置框架等吗?当我更改状态的背景时?
-(void)favButtons:(id)sender {
int i = [sender tag];
NSString *fav = [NSString stringWithFormat:@"%i", i];
if ([[Favinsults objectForKey:fav] isEqualToString:@"0"]){
[sender setImage:[UIImage imageNamed:@"favButton1.png"] forState:UIControlStateNormal];
UIButton* button = (UIButton *)[DoubleScrollLeft viewWithTag:i];
[button setBackgroundImage:[UIImage imageNamed:@"buttonD1.png"] forState:UIControlStateNormal];
} else {
[sender setImage:[UIImage imageNamed:@"favButton0.png"] forState:UIControlStateNormal];
UIButton* button = (UIButton *)[DoubleScrollLeft viewWithTag:i];
[button setBackgroundImage:[UIImage imageNamed:@"buttonD0.png"] forState:UIControlStateNormal];
}
}
UIScrollview
连接到IBAction
方法时似乎存在错误连接。仔细检查IB连接。
您的发件人不知何故是UIScrollview。
将此行更改为,这将避免出现警告消息。
[sender setImage:[UIImage imageNamed:@"favButton1.png"] forState:UIControlStateNormal];
[((UIButton *)sender) setImage:[UIImage imageNamed:@"favButton1.png"] forState:UIControlStateNormal];
您必须将发送方强制转换为UIButton,然后才能调用其上的任何UIButton方法…
UIButton * newbutton = (UIButton*)sender;
[newbutton setImage:[UIImage imageNamed:@"favButton1.png"] forState:UIControlStateNormal];
等等。
[UIScrollView setBackgroundImage:forState:]
意味着您的发件人被解释为UIScrollView类型(而不是UIButton),并且UIScrollView中没有定义方法setBackgroundImage:forState:
。