我在UITableViewDelegate中有以下代码:
@IBAction func editButtonPressed(sender: AnyObject) {
if weightsTableView.editing {
editButton.title = "Edit"
weightsTableView.setEditing(false, animated: true)
} else {
editButton.title = "End Edit"
weightsTableView.setEditing(true, animated: true)
}
}
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
scale.weights.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
}
}
func tableView(tableView: UITableView, moveRowAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath) {
let ws = scale.weights.removeAtIndex(sourceIndexPath.row)
scale.weights.insert(ws, atIndex: destinationIndexPath.row)
}
我可以通过滑动删除表中的条目而无需进入编辑模式。当我进入编辑模式时,我可以移动表格中的条目,但触摸删除图标不会做任何事情。
我是新手。我错过了什么?
根据要求,这是表控制器代码的其余部分:
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return scale.weights.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("WeightSetCell", forIndexPath: indexPath) as! WeightSetTableViewCell
cell.gaugeLabel.text = scale.weights[indexPath.row].gauge
cell.initialLabel.text = "\(scale.weights[indexPath.row].initial) " + scale.weights[indexPath.row].weightUnit
cell.incrementLabel.text = "\(scale.weights[indexPath.row].increment) " + scale.weights[indexPath.row].weightUnit
return cell
}
附加信息:我在if editingStyle == .Delete行上设置了一个断点。当我通过滑动删除时会调用它,但是当我进入编辑模式并单击删除图标时则不会调用它。
答案 0 :(得分:0)
使用它,看起来更适合我
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
let deleteAction = UITableViewRowAction(style: .Destructive, title: "Delete") { action in
// Update your datasource here
tableView.reloadData() // Reload data
}
return [deleteAction]
}