更改UIButton背景时,发送到实例的未识别选择器



嘿,我正在编写一个函数,处理我的应用程序中的收藏夹,以及更改收藏夹按钮的图像。我想更改另一个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:

最新更新