使用自定义单元格反转 UITableView

Reversing UITableView with custom cells

我有一个反转的 UITableView,为了反转它,我在 tableView 和每个单元格上应用了 CGAffineTransform(scaleX: 1, y: -1)。

我用自定义单元格(标签 + 2 个按钮)填充我的 table 视图。 每个按钮都会在前一个单元格上方插入一个新的自定义单元格,依此类推。

自定义单元格数据通过本地 .plist 设置。

问题是在添加了一些单元格之后,行为发生了变化。当标签完全显示时,按钮出现,但按钮 1 已经突出显示并且无法选择。 我不明白(并发现)为什么...

一个git项目揭示了一千多个字,所以我的项目样本: https://github.com/cmii/ReverseTableView

在此示例中,问题出现在插入第 5 个单元格时。

您正在使一个单元格出队,然后在不重置的情况下使用它。系统创建的单元格只够容纳可见单元格。之后,他们将重新 used.Here 的示例使用您的代码。当你创建一个单元格时,你这样做:

 //le bouton sélectionné est mis en avant
            if button == sender as! ChoiceButton {
                button.backgroundColor = UIColor.yellow
            }

当你把它变成黄色,它从屏幕上消失,你将它出队然后重新使用没有 "cleaning it up" 的单元格时会发生什么?即使它不是 ChoiceButton,它也会是黄色的,因为它已经是黄色的了。

在 configureCell 方法中修复此问题的最简单方法。做同样的检查,但如果它不是 ChoiceButton,则将其恢复为正常颜色(在本例中我将使用清除):

   func configureCell(tableView: UITableView, cell: ParagraphTableViewCell, atIndexPath indexPath: IndexPath) {
...
     //le bouton sélectionné est mis en avant
                if button == <someBoolean> {
                    button.backgroundColor = UIColor.yellow
                } else {
                    button.backgroundColor = .clear
                }
...
}

如果还有其他问题,现在您了解它们的来源,因此您应该能够自己解决它们。祝你好运!