如何在ios中更改特定单元格图像相对于索引路径?

Posted

技术标签:

【中文标题】如何在ios中更改特定单元格图像相对于索引路径?【英文标题】:How to change the specific cell image respect to indexpath in ios? 【发布时间】:2016-03-18 10:56:58 【问题描述】:

当我根据需要更改 tableview 单元格中的图像的值更新表时,我正在使用 tableview 和 Sqlite,它也可以正常工作,但是当我滚动时,我的图像正在更改下面是我的代码

Sqlite 表更新

[DBObject upDateTable:@"Green" :messageID];

我如何从我的数组中获取值

  NSString *messageStatus = [[messageArray1 objectAtIndex:index] ColorStatus];

现在我在 cellForRowAtIndexPath 中检查 colorStatus,如下所示

if ([messageStatus isEqualToString:@"Green"]) 

           cell.playButtonImageView.image= [UIImage imageNamed:@"message-Green.png"];

        [[ASNGlobalClass shareManager] setIsDelivered:YES];
    else if ([messageStatus isEqualToString:@"Red"]) 
        cell.playButtonImageView.image= [UIImage imageNamed:@"message-Red.png"];
    else if ([messageStatus isEqualToString:@"Yellow"]) 
        cell.playButtonImageView.image= [UIImage imageNamed:@"message-yellow.png"];
    

我的图像分配完美,但是当我滚动时它正在改变我不知道我错过了哪里请帮助我

【问题讨论】:

把 else 条件放在最后,将图片设置为 nil 你把NSString *messageStatus = [[messageArray1 objectAtIndex:index] ColorStatus];放在哪里? 出于检查目的,我使用上面的行如 if ([messageStatus isEqualToString:@"Green"]) 能否在 cellForRowAtindexPath 中添加单元格代码? @RonakChaniyara 对不起,我没接你? 【参考方案1】:
     cell.playButtonImageView.image=nil;  // write this line before set image
     if ([messageStatus isEqualToString:@"Green"]) 

           cell.playButtonImageView.image= [UIImage imageNamed:@"message-Green.png"];

        [[ASNGlobalClass shareManager] setIsDelivered:YES];
    else if ([messageStatus isEqualToString:@"Red"]) 
        cell.playButtonImageView.image= [UIImage imageNamed:@"message-Red.png"];
    else if ([messageStatus isEqualToString:@"Yellow"]) 
        cell.playButtonImageView.image= [UIImage imageNamed:@"message-yellow.png"];
    

【讨论】:

【参考方案2】:
if ([messageStatus isEqualToString:@"Green"]) 
    cell.playButtonImageView.image= [UIImage imageNamed:@"message-Green.png"];
    [[ASNGlobalClass shareManager] setIsDelivered:YES];
else if ([messageStatus isEqualToString:@"Red"]) 
    cell.playButtonImageView.image= [UIImage imageNamed:@"message-Red.png"];
else if ([messageStatus isEqualToString:@"Yellow"]) 
    cell.playButtonImageView.image= [UIImage imageNamed:@"message-yellow.png"];

else
    cell.playButtonImageView.image= [UIImage imageNamed:@"some-default-image-placeholder.png"];  // some-default-image-placeholder.png is an placeholder image name 

【讨论】:

不,我必须处理三个图像。我也在其他地方尝试过使用 nil 您需要调试 messageStatus 值,并确保它至少具有绿色、红色、黄色中的一个值,而不是永远不会执行 else 循环。 感谢重播。是的,你是对的,但每次如果我改变一些东西,它就会变成绿色,而不是我会改变图像对索引路径的尊重 如果在滚动时您的单元格图像发生变化,那么它肯定无法进入任何 if 或 else if 块,因此它正在显示旧的单元格图像(即在重用之前)。因此,请尝试记录每个单元格的 messageStatus 值,并确保它至少具有绿色、红色、黄色中的一个值。 感谢重播,我会尝试

以上是关于如何在ios中更改特定单元格图像相对于索引路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何删除表格视图单元格中单选按钮的索引路径?

集合视图在第一个索引上设置单选按钮图像并选择更改

如何在单元格中调用图像 url 和图像视图以获取集合视图的索引路径功能

如何在 iOS 中更改单元格图像的大小

如何在单元格中设置 UILabel 相对于图像的位置

在iOS中选择单元格时如何以编程方式更改原型单元格中的标签文本颜色和图像