Нераспознанный селектор отправляется на экземпляр При изменении фона UIButton - PullRequest
1 голос
/ 13 февраля 2012

Эй, я пишу функцию, которая обрабатывает избранное в моем приложении, а также изменяет изображение кнопки избранного. Я хочу изменить изображение соответствующей кнопки в другом 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];

    }
}

Ответы [ 3 ]

2 голосов
/ 13 февраля 2012

Ваш отправитель как-то UIScrollview.

Измените эту строку как, Это должно избежать предупреждения.

[sender setImage:[UIImage imageNamed:@"favButton1.png"] forState:UIControlStateNormal];

[((UIButton *)sender) setImage:[UIImage imageNamed:@"favButton1.png"] forState:UIControlStateNormal];
2 голосов
/ 13 февраля 2012

Кажется, что существует неправильное соединение, когда UIScrollview подключен к методу IBAction.Тщательно проверяйте соединения IB.

0 голосов
/ 13 февраля 2012

Вы должны привести отправителя к UIButton, прежде чем сможете вызвать любой из методов UIButton для него ...

UIButton * newbutton = (UIButton*)sender;
[newbutton setImage:[UIImage imageNamed:@"favButton1.png"] forState:UIControlStateNormal];

и т.д.

[UIScrollView setBackgroundImage:forState:]

означает, что ваш отправитель интерпретируется как тип UIScrollView (не UIButton), и в UIScrollView не определен метод setBackgroundImage:forState:.

...