我创建了一个自定义单元格来显示文本和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
我错过了什么吗?
答案 0 :(得分:2)
如果您使用的是自定义单元格,则可以覆盖函数setSelected:animated:like so ...
- (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中保持图像相同。然后你可以将hidden设置为YES或NO。这也会更高效。
为了让你从表中获得多个选择,然后在TableViewController中添加...
self.tableView.allowsMultipleSelection = YES;
这将对其进行设置,以便您可以选择多行。一次点击选择,另一次点击取消选择。
要获取所选行,您可以运行...
NSArray *selectedRows = [self.tableView indexPathsForSelectedRows];
答案 1 :(得分:0)
为什么要在同一行上调用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"]];
}
答案 2 :(得分:0)
我发现你的代码中存在两个问题
1)此代码:
cell.check.image= setImage:[UIImage imageNamed:@"1355327732_checkbox-checked"];
2)没有为图像提供扩展名
将其替换为:
cell.check.image= [UIImage imageNamed:@"1355327732_checkbox-checked.png"];