2015-04-23 3 views
1

У меня есть costoum ячейка с кнопкой. Я хочу, чтобы иметь возможность изменять изображение кнопки при нажатии. Я пытался это сделать, но я не получил желаемого результата.Кнопки пользовательские ячейки

в cellForRowAtIndexPath:

BOOL isTheObjectThere = [self.favoriteArry containsObject:self.tableData[indexPath.row]]; 
     if (isTheObjectThere==TRUE) { 
      cell.favBtn.hidden = NO; 
      [cell.favBtn setImage:[UIImage imageNamed:@"fav_selected.png"] forState:UIControlStateNormal]; 
      cell.favBtn.tag = indexPath.row; 
      [cell.favBtn addTarget:self action:@selector(favoriteBtn:) forControlEvents:UIControlEventTouchUpInside];} 
else { 
      cell.favBtn.hidden = NO; 
      [cell.favBtn setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal]; 
      cell.favBtn.tag = indexPath.row; 
      [cell.favBtn addTarget:self action:@selector(unfavoriteBtn:) forControlEvents:UIControlEventTouchUpInside]; 
     } 

и:

-(void)favoriteBtn:(UIButton*)sender 
{ 
     if ([cell.favBtn.currentImage isEqual:[UIImage imageNamed:@"fav_selected.png"]]){ 
     [cell.favBtn setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal]; 
} 

    else if ([cell.favBtn.currentImage isEqual:[UIImage imageNamed:@"[email protected]"]]){ 
     [cell.favBtn setImage:[UIImage imageNamed:@"fav_selected.png"] forState:UIControlStateNormal]; 

    } 
+0

Вы должны легко быть в состоянии решить эту проблему с помощью отладчика. Моя догадка заключается в том, что вы не можете использовать 'isEqual' так, как вы его используете. Лучше сохранить копию изображений в качестве локальных свойств, тогда вы можете просто сравнить указатели. –

+0

Идея заключается в том, что изображение меняется, но не в правой ячейке. –

ответ

1

должно быть что-то вроде следующего:

в вашем cellForRow:

[cell.favButton addTarget:self action:@selector(favButtonTapped:) forControlEvents:UIControlEventTouchUpInside]; 

в вашем favButtonTapped:

if ([self.favoriteArray containsObject:indexPath]) { 
    [self.favoriteArray removeObject:indexPath]; 
    // sender setImage... 
} else { 
    [self.favoriteArray addObject:indexPath]; 
    // sender setImage... 
} 

удачи :)

Смежные вопросы