i具有 uitaiteView
的常见模式,其中辅助 View Controller 在选择一行时被推到顶部。为了在用户关闭第二个 View Controller 并返回到 TableView 时为用户提供一些上下文,第一个 View Controller 具有以下内容:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if let index = tableView.indexPathForSelectedRow {
tableView.deselectRow(at: index, animated: animated)
}
}
这会导致这种意外且不和谐的过渡,在这种过渡中,取消选择的单元格会逐渐淡出它的背景,然后再恢复正常:
我的预期是它会从部分柔和的状态选择直接回到正常的黑暗状态。
(该单元是一个正在进行的工作 - 它远未完成)
按照建议here这不是一个真正的选择,因为我确实想保留上下文提示,并且整个单元格应该继续具有白色背景。
在回答 Rico 的问题时,单元格被创建为 .swift
和 .xib
对, View 的层次结构为:
Swift 做的很少——在两个标签上设置 .textInsets
,在按钮中绘制披露指示符。
最佳答案
我相信这是因为 setSelected
的默认实现删除了单元格所有 subview 的背景色。您可以做的是覆盖 setSelected
和/或 setHighlighted
并自行更新单元格。
这还允许您为选定的单元格创建自定义外观。
选中时使用红色背景,未选中时使用白色背景的示例:
override func setSelected(_ selected: Bool, animated: Bool) {
let animationDuration = animated ? 0.3 : 0
UIView.animate(withDuration: animationDuration) {
self.backgroundColor = highlighted ? UIColor.red : UIColor.white
}
}
关于ios - 取消选择时如何阻止 UITableViewCell 闪烁为白色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56381578/