【问题标题】:iOS Semi-transparent View On a Tableview Cell Bleeding onto Other Cells表视图单元格上的iOS半透明视图流血到其他单元格
【发布时间】:2016-01-25 14:51:53
【问题描述】:

在我的 tableview 控制器上,一些单元格有一个半透明的视图,表示用户已停用的单元格。当我的表格视图第一次出现时,单元格会正确显示,并在正确的单元格上显示半透明视图。但是,当我滚动 tableview 以使没有半透明视图的单元格消失然后刷新时,半透明视图会溢出到该单元格上。除了这个半透明视图现在在它上面之外,单元格的所有其他元素都可以。

在单元格上显示半透明视图依赖于一个名为“active”的 BOOL,当我在填充单元格之前从后端拉下数据时,它会提供给我。由于我没有在现场计算这个 BOOl 或其他任何东西,我不确定为什么视图会流血。任何想法如何解决这一问题?谢谢!

【问题讨论】:

  • 请给我一些代码。

标签: ios uitableview


【解决方案1】:

细胞被重复使用。如果您从表格视图控制器添加它,则下次使用该单元格时,该视图仍将存在。您最终可能会将此视图的许多层添加到单元格中。

半透明视图应该是您在需要时显示或隐藏的单元格的永久部分,而不是在显示单元格时添加的内容。

【讨论】:

    【解决方案2】:

    我认为您需要清除单元格的背景颜色添加此方法。

    - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
     [cell setBackgroundColor:[UIColor clearColor]];
    

    【讨论】:

      【解决方案3】:

      但是你添加了半透明视图,在方法中删除它

      -(void)tableView:(UITableView *)tableView willDisplayCell (UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
      //Remove transparent view
      }
      

      【讨论】:

        【解决方案4】:

        您的单元格中似乎没有使用prepareForReuse。 不看任何代码,我猜你使用 prepareForReuse 不正确或者根本没有使用。

        在重复使用之前,需要清理单元格并使其恢复到初始状态,如果您不这样做,那么当前者被重复使用时,您添加到单元格中的内容可能会显示在任何随机单元格中。

        您应该看看我的回答 here 以获取更多详细信息。

        如果您需要更多帮助,请告诉我。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-07
          • 2018-08-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多