我有一个带文本字段的自定义单元格。我以标准方式删除行:
override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
dataArray.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Automatic)
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let myCell = tableView.dequeueReusableCellWithIdentifier("cellId", forIndexPath: indexPath) as! MyCell
myCell.textField.placeholder = dataArray[indexPath.row]
return myCell
}
此外,我还将自己的班级用于单元格。
class MyCell: UITableViewCell {
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
setupViews()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
let textField: UITextField = {
var field = UITextField()
field.placeholder = "Placeholder Text"
field.translatesAutoresizingMaskIntoConstraints = false
return field
}()
func setupViews() {
addSubview(textField)
//Constraints stuff
}
问题是如果文本字段包含文本而我删除了该行,插入新行后我会得到带有文本的旧行。
我该如何避免它?我需要干净的排。
顺便说一下,动画也不能正常工作。感谢您的帮助!
答案 0 :(得分:1)
使用UITableViewCell
' prepareForReuse()
方法。
func prepareForReuse() {
textField.text = nil
}
更多信息here。
答案 1 :(得分:1)
您的cellForRowAtIndexPath负责在任何单元格上设置正确的值。它可能正在重用您刚刚删除的单元格。确保cellForRowAtIndexPath在调用时根据indexPath重置单元格中的值(特别是删除后)