可以通过滑动删除表格行,但不能在编辑模式下删除

时间:2016-03-16 04:01:08

标签: ios swift uitableview

我在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行上设置了一个断点。当我通过滑动删除时会调用它,但是当我进入编辑模式并单击删除图标时则不会调用它。

1 个答案:

答案 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]
}