首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Swift中卷曲时UITableViewCell的选择

在Swift中卷曲时UITableViewCell的选择
EN

Stack Overflow用户
提问于 2022-01-06 09:17:16
回答 5查看 595关注 0票数 0

我使用的是一个UITableView,当我使用didSelectRow函数在cellForRowAt上点击单元格时,我正在改变单元格的颜色。困扰我的是,当我向下滚动或向上滚动时,我之前改变颜色的那些细胞被改变为其他细胞。这是我的代码:

代码语言:javascript
运行
复制
 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

     let cell = myTableView.dequeueReusableCell(withIdentifier: "TasksTableViewCell") as! TasksTableViewCell

     cell.backView.backgroundColor = .white

  return cell
} 

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

  let cell = myTableView.cellForRow(at: indexPath) as! TasksTableViewCell

  cell.backView.backgroundColor = UIColor(named: "primaryViewColor")
} 

有人知道为什么会这样吗?有没有人有一个解决方案,当只有那些细胞改变颜色时,我点击,而当我滚动或向上,只有这些细胞有另一种颜色?

EN

Stack Overflow用户

发布于 2022-01-06 09:43:53

TableViewCells一离开可见区域就会被重用。这意味着,当视图层次结构向上或向下滚动时,其背景颜色的单元格将被删除。如果再次滚动相应的行,则该IndexPath再次调用函数IndexPath,该单元格将得到一个白色的背景。

最简单的方法是保存所选单元格的IndexPaths,并在必须选择当前单元格时签入cellForRowAt函数。

将以下变量添加到viewController类中:

代码语言:javascript
运行
复制
var selectedIndexPaths = Set<IndexPath>()

并修改tableView委托方法:

代码语言:javascript
运行
复制
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
    let cell = myTableView.dequeueReusableCell(withIdentifier: "TasksTableViewCell") as! TasksTableViewCell

    cell.backView.backgroundColor = (selectedIndexPaths.contains(indexPath) ? UIColor(named: "primaryViewColor") : .white)
    
    return cell
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
{
    if selectedIndexPaths.contains(indexPath)
    {
        selectedIndexPaths.remove(indexPath)
    }
    else
    {
        selectedIndexPaths.insert(indexPath)
    }
    tableView.reloadRows(at: [indexPath], with: .none)
}
票数 0
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70604868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档