我想要实现的目标,您可以在本机时钟应用中看到。 当您选择铃声时,单元格会获得复选标记附件并在触摸时突出显示,但之后会直接使用淡入淡出动画直接亮起。
所以我的问题是,有没有办法通过我selectionStyle
实例的UITableViewCell
临时使用原生单元格突出显示,然后保留选择以显示附件视图。
我知道我可以在tableView.deselectRow(at: indexPath, animated: true)
委托方法中编写didSelectRowAt
。但是这消除了将复选标记绑定到选择状态的能力。
我也知道我可以自己动画单元格的背景,但这很糟糕,因为iOS可以更改默认的高亮颜色,我希望我的应用程序尽可能少地使用自定义UI代码感觉是原生的
我在这里缺少一种原生的方式吗?
答案 0 :(得分:0)
我能想到的两个选项。
最简单,但失去了不高光动画。
在您的桌面视图上将allowsSelection
设置为true
并覆盖您单元格上的setSelected
即可。
override func setSelected(_ selected: Bool, animated: Bool) {
accessoryType = (selected ? .checkmark : .none)
}
用户按下时会突出显示单元格,然后显示复选标记。
更复杂但保留动画。
请勿在tableview上使用allowsSelection
属性并自行跟踪所选行。
在cellForRowAt:
中,您需要设置单元格以显示/隐藏复选标记。
在didSelectRowAt:
中,您需要从旧选定行中删除复选标记,更新跟踪所选行的值,然后将复选标记添加到新选定的行。