使用自定义单元格反转 UITableView
Posted
技术标签:
【中文标题】使用自定义单元格反转 UITableView【英文标题】:Reversing UITableView with custom cells 【发布时间】:2017-06-01 16:01:16 【问题描述】:我有一个反向 UITableView,要反转它,我在 tableView 和每个单元格上应用 CGAffineTransform(scaleX: 1, y: -1)。
我使用自定义单元格(标签 + 2 个按钮)填充我的表格视图。 每个按钮都会在前一个单元格上方插入一个新的自定义单元格,依此类推。
自定义单元格数据通过本地 .plist 设置。
问题是在添加多个单元格后,行为发生了变化。当标签完成完全显示时,按钮会出现,但 button1 已经突出显示并且无法选择。 我不明白(并找到)为什么......
一个 git 项目揭示了一千多个单词,所以我的项目示例: https://github.com/cmii/ReverseTableView
在此示例中,插入第 5 个单元格时出现问题。
【问题讨论】:
我不在办公桌前,所以无法测试。我认为您正在使一个单元格出列,然后在不重置它的情况下使用它。系统创建的单元格仅足以容纳可见单元格。之后,它们被重新使用。使用表格视图 prepareCellForReuse 或在出列单元格后将属性设置为 nil。 是代码的问题吗:self.tableView.register(UINib(nibName: "ParagraphTableViewCellView", bundle: Bundle.main), forCellReuseIdentifier: "ParagraphTableViewCell") ?我读到它在 Swift 3.0 中是必要的 没有。这是因为您在上次使用单元格时已经更改了该单元格,并且在再次使用时没有撤消这些更改。 【参考方案1】:您正在使单元格出列,然后在不重置的情况下使用它。系统创建的单元格仅足以容纳可见单元格。之后它们被重新使用。这是一个使用您的代码的示例。创建单元格时,请执行以下操作:
//le bouton sélectionné est mis en avant
if button == sender as! ChoiceButton
button.backgroundColor = UIColor.yellow
当你把它变成黄色,它从屏幕上消失,你把它出列,然后在没有“清理”的情况下重复使用单元格时会发生什么?即使不是 ChoiceButton,它也会是黄色的,因为它已经是黄色的了。
在您的 configureCell 方法中解决此问题的最简单方法。做同样的检查,但如果它不是一个选择按钮,你把它变回正常颜色(我将在这个例子中使用 clear):
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
...
如果还有其他问题,现在您了解它们的来源,因此您应该能够自己解决它们。祝你好运! ?
【讨论】:
以上是关于使用自定义单元格反转 UITableView的主要内容,如果未能解决你的问题,请参考以下文章