在 UITableView 单元格的编辑中删除旁边的编辑按钮的功能 操作为行在索引路径



我已经实现了"在单元格上向左滑动"功能以显示"编辑"和"删除"按钮,但我正在努力正确传递单元格的 indexPathForCell,因为点击编辑按钮只会显示添加/编辑单元格视图,而不是使用点击编辑按钮的单元格中的数据预填充添加/编辑中的字段。

以下是我的 ItemTableViewController 中的相关代码:

// swipe-left options for a cell (Edit, Delete)
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
    let delete = UITableViewRowAction(style: .Destructive, title: "Delete") { (action, indexPath) in
        // delete item at indexPath
        self.items.removeAtIndex(indexPath.row)
        tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
    }
    let edit = UITableViewRowAction(style: .Normal, title: "Edit") { (action, indexPath) in
        // edit item at indexPath
        self.performSegueWithIdentifier("EditItem", sender: self)
    }
    return [delete, edit]
}

// Prepare for Segue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "EditItem" {
        let ItemDetailViewController = segue.destinationViewController as! AddItemController
        // Get the cell that generated this segue.
        if let selectedItemCell = sender as? ItemTableViewCell {
            let indexPath = tableView.indexPathForCell(selectedItemCell)!
            let selectedItem = item[indexPath.row]
            ItemDetailViewController.item = selectedItem
        }
    }
    else if segue.identifier == "AddItem" {
        print("Adding new item.")
    }
}

如果我点击单元格本身,prepareForSegue 功能工作正常,因为这就是 segue 链接到的内容。最终,我想点击单元格以触发另一个视图的不同 segue,因此实际上似乎我将不得不放弃大部分/大部分实现。我只需右键单击并从"编辑单元格"按钮拖动,但它在故事板中不可见,因此它的当前实现搭载了"点击单元格"操作,但由于我希望"点击单元格"续集转到其他地方,我完全不知道如何让编辑按钮"获取此单元格的 indexPath 并转到添加/编辑视图"。

In self.performSegueWithIdentifier("EditItem", sender: self)你不应该发送 self,而是你收到的 indexPath,它是你想要修改的对象的 indexPath。

在 segueIdentifier EditItem 的prepareForSegue中,您知道发送方是 NSIndexPath,因此您可以使用它(实际上,您不必搜索 tableView.indexPathForCell)。

最新更新