【问题标题】:How to change the specific cell image respect to indexpath in ios?如何在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 对不起,我没接你?

标签: ios iphone uiimage uitableview


【解决方案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 值,并确保它至少具有绿色、红色、黄色中的一个值。
    • 感谢重播,我会尝试
    猜你喜欢
    • 1970-01-01
    • 2012-06-11
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    相关资源
    最近更新 更多