UITableView:突出显示最后一个单元格,但其他单元格也会突出显示

Posted

技术标签:

【中文标题】UITableView:突出显示最后一个单元格,但其他单元格也会突出显示【英文标题】:UITableView: highlight the last cell but other cells get highlighted as well 【发布时间】:2016-05-15 14:34:33 【问题描述】:

我有 UITableView,用作 SWRevealViewController 的一部分的滑动菜单。

我想在 UITableView 中选择最后一个单元格并实现以下内容:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let customCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! IGAWindAloftMenuTableViewCell

    ...


    let sectionsAmount = tableView.numberOfSections
    let rowsAmount = tableView.numberOfRowsInSection(indexPath.section)

    if (indexPath.section == sectionsAmount - 1 && indexPath.row == rowsAmount - 1)
    
        customCell.backgroundColor = UIColor.yellowColor()
    

    return customCell

当我一直向下滚动时,它可以工作——最后一个单元格被突出显示。但是,当我上下滚动时,表格中间的其他单元格也会突出显示。

有什么办法可以预防吗?

谢谢!

【问题讨论】:

【参考方案1】:

您必须撤消在if-branch 中对所有其他单元格所做的更改:

if (indexPath.section == sectionsAmount - 1 && indexPath.row == rowsAmount - 1) 
    customCell.backgroundColor = UIColor.yellowColor()
 else 
    customCell.backgroundColor = UIColor.whiteColor() // or whatever color

产生不良副作用的原因是细胞的重复使用。创建一个单元格,然后将其用作最后一个单元格,然后移出屏幕并在其他地方重复使用。它仍然包含更改后的颜色信息,但不再在相应的位置。

【讨论】:

以上是关于UITableView:突出显示最后一个单元格,但其他单元格也会突出显示的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableView 单元格 iOS Swift 中突出显示搜索结果

UITableView 中的突出显示按钮反应缓慢

在 UITableView 中突出显示所选单元格的边框

UITableview 单元格中的按钮不会在快速点击时突出显示

UITableView 单元格选择颜色?

即使在 tableView reloadData 之后,UITableView 选择也会突出显示