我创建自定义单元格来显示文本和2个图像,当用户选择该小区时,图像应该改变。 我可以访问该单元格的属性,但不能改变它们:
- (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:动画:是这样的...
- (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改变这一点。 这将只是工作。
这个更好的选择是保持图像相同的内self.check。 然后,你可以设置隐藏为YES或NO相应。 这将是更好的性能也。
有这个,让你从表中得到多重选择,然后在TableViewController放...
self.tableView.allowsMultipleSelection = YES;
这将设置它,这样你可以选择多行。 一个水龙头选择和另一个水龙头取消选择。
为了让您可以运行选定的行...
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)没有规定的图像扩展
其替换为:
cell.check.image= [UIImage imageNamed:@"1355327732_checkbox-checked.png"];