不重复:
问题/答案是关于改变颜色。我没有问题改变单元格的颜色,而是在使用"颜色"时遇到问题。 .clear
并插入一个单元格,正在重置"重置"。
每当我将单元格的背景颜色设置为.clear
并在表格中插入一行时,单元格将自动"重置"到原来的状态。当背景颜色具有值时,这不会发生。
例如:
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
let gesture = UIPanGestureRecognizer()
gesture.addTarget(self, action: #selector(handlePan))
gesture.delegate = self
addGestureRecognizer(gesture)
backgroundColor = .clear
}
func handlePan(_ recognizer: UIPanGestureRecognizer) {
if recognizer.state == .changed {
let translation = recognizer.translation(in: self).x
contentView.frame.origin.x += translation
recognizer.setTranslation(.zero, in: self)
}
if recognizer.state == .ended {
guard let index = delegate?.tableView.indexPath(for: self) else { return }
delegate?.insert(index)
}
}
我的ViewController:
func insert(_ index: IndexPath) {
let cell = tableView.cellForRow(at: index) as? PannableCell
items.append("some")
let path = IndexPath(row: index.row + 1, section: index.section)
tableView.insertRows(at: [path], with: .fade)
}
问题:
如何将单元格的背景颜色设置为.clear
并插入一行而不重置单元格?我想要这个,因为在我插入了单元格之后,我想将原始单元格设置为原始单元格的原始位置。
修改:
设置backgroundColor
的颜色仅适用于iOS 9.在iOS 10中,它仍会以某种方式重置单元格。
答案 0 :(得分:1)
将您的插入更改为:
tableView.beginUpdates()
tableView.insertRows(at: [path], with: .fade)
tableView.endUpdates()
答案 1 :(得分:1)
尝试在tableView上使用beginUpdates()
和endUpdates()
。
tableView.beginUpdates()
// insert, delete your rows here
tableView.endUpdates()
如果您不使用这些方法,最终可能会遇到各种错误,包括无效行数,UI故障等。
如果它没有帮助你可以尝试"脏修复"它通过在您的单元格的prepareForReuse
方法或tableView:willDisplayCell:forRowAtIndexPath:
委托方法中设置所需的颜色(尽量避免像这样的脏修复)。