无法更改所选定制单元格中的图像

我创build了一个自定义的单元格来显示文本和2个图像,当用户select单元格时,图像应该改变。 我可以访问单元格的属性,但不能更改它们:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; CustomCell *cell = (CustomCell *)[self.tableView cellForRowAtIndexPath:indexPath]; cell.check.image = setImage:[UIImage imageNamed:@"1355327732_checkbox-checked"]; [cell.check setImage:[UIImage imageNamed:@"1355327732_checkbox-checked"]]; } 

cell.check是一个UIImageView

我错过了什么?

如果你正在使用自定义单元格,那么你可以覆盖函数setSelected:animated:像这样…

 - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state if (selected) { self.check.image = [UIImage imageNamed:@"1355327732_checkbox-checked"]; } else { self.check.image = nil; } } 

那么你不必在tableView代码中做任何事情来改变这一点。 它会工作。

更好的select是保持self.check中的图像相同。 那么你可以将隐藏设置为YES或NO。 这也会更高性能。

为了让你从表中获得多个select,然后在TableViewController中放置…

 self.tableView.allowsMultipleSelection = YES; 

这将设置它,以便您可以select多行。 一个水龙头select,另一个水龙头取消select。

要获取选定的行,您可以运行…

 NSArray *selectedRows = [self.tableView indexPathsForSelectedRows]; 

你为什么要在同一行上调用setImage和cell.check.image? 试试这个,看看结果是否一样。

 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; CustomCell *cell = (CustomCell *)[self.tableView cellForRowAtIndexPath:indexPath]; //cell.check.image = setImage:[UIImage imageNamed:@"1355327732_checkbox-checked"]; [cell.check setImage:[UIImage imageNamed:@"1355327732_checkbox-checked"]]; 

}

我注意到你的代码中有两个问题

1)这个代码:

cell.check.image= setImage:[UIImage imageNamed:@"1355327732_checkbox-checked"];

2)没有为图像提供扩展名

将其replace为:

cell.check.image= [UIImage imageNamed:@"1355327732_checkbox-checked.png"];