Изменить изображение UIButton внутри ячейки - PullRequest
1 голос
/ 05 июня 2011

У меня проблемы с изменением изображения моего UIButton, которое содержится в ячейке табличного представления.Мой код выглядит следующим образом:

 // In tableview for cell at rowIndex method
 self.iconBtn = [[UIButton alloc]initWithFrame:CGRectMake(670,10,80, 80)];
            self.iconBtn.tag = kIconValueTag;

 [cell.contentView addSubview:self.iconBtn];

 //Add icon to cell
 UIImage *btnImage = [UIImage imageNamed:@"blank_star.png"];

 [self.iconBtn setImage:btnImage forState:UIControlStateNormal];

 // I am calling method changeIconState after user clicks on icon.
 [self.iconBtn addTarget:self action:@selector(changeIconState) forControlEvents:UIControlEventTouchUpInside];

После нажатия кнопки вызывается метод вне метода представления таблицы:

-(void)changeIconState
{
    if (self.iconSelectState == kIconNotSelected) 
    {
        self.iconSelectState = kIconSelected;
    }
    else
    {
        self.iconSelectState = kIconNotSelected;
    }
    [self changeIcon];

}
-(void)changeIcon
{
    if (self.iconSelectState == kIconSelected) 
    {
        UIImage *btnImageHighlighted = [UIImage imageNamed:@"star.png"];
        [self.iconBtn setImage:btnImageHighlighted forState:UIControlStateNormal];
    }
    else
    {
        UIImage *btnImageNormal = [UIImage imageNamed:@"blank_star.png"];
        [self.iconBtn setImage:btnImageNormal forState:UIControlStateNormal];
    }

}

После запуска программы значок не изменилсяс пустого места на звезду, как я хотел.Он просто оставался пустой звездой.Есть что-то, чего я здесь не хватает?

1 Ответ

1 голос
/ 22 июня 2011

Почему вы сами управляете состоянием изображения / кнопки?Почему бы не загрузить два образа для определенных состояний и позволить ОС справиться с этим?

 //Add icon to cell
 UIImage *btnImage = [UIImage imageNamed:@"blank_star.png"];
 UIImage *btnImageHighlighted = [UIImage imageNamed:@"star.png"];

 [self.iconBtn setImage:btnImage forState:UIControlStateNormal];
 [self.iconBtn setImage:btnImageHighlighted forState:(UIControlStateHighlighted && UIControlStateSelected)];

Если вам нужно управлять своей собственностью (iconSelectedState), вы можете, не беспокоясь об изображении.Кроме того, вы можете запросить свойство состояния кнопок, чтобы определить, в каком состоянии оно находится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...