2015-04-23 143 views
1

我有一个按钮的costoum单元格。我想在按下按钮时可以更改按钮的图像。我正在尝试这个,但我没有得到所需的结果。按钮自定义单元格

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]; 
中的cellForRowAtIndexPath

favButtonTapped

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

好运:)

相关问题