在选择自定义单元格不能改变形象(Can't change image in selected

2019-10-17 12:00发布

我创建自定义单元格来显示文本和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

我这么想吗?

Answer 1:

如果您使用的是自定义单元格,那么你可以重写功能的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];


Answer 2:

你为什么要呼吁在同一行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"]]; 

}



Answer 3:

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

1)该代码:

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

2)没有规定的图像扩展

其替换为:

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



文章来源: Can't change image in selected custom cell