SwipeCellKit动作不会执行segue

时间:2018-06-15 13:04:05

标签: ios swift segue swipe

我正在使用SwipeCellKit作为我的TO DO List应用程序。当用户向左滑动时,它会删除该项目,但当用户向右滑动时,我希望他能够在此项目上设置提醒,因此我创建了一个动作set a reminder

此操作应执行segue,将用户带到其中包含日期选择器的自定义弹出窗口。问题是,当我点击按钮设置提醒时,模拟器将以未捕获的异常退出。我已经尝试从这个按钮执行删除它完美的工作,我也尝试从该按钮执行另一个segue到另一个视图控制器模拟器退出。有人能告诉我这里我做错了什么吗?这是我的代码:

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath, for orientation: SwipeActionsOrientation) -> [SwipeAction]? {        if orientation == .left {
        guard isSwipeRightEnabled else { return nil }
        let setReminder = SwipeAction(style: .default, title: "Set a reminder") { action, indexPath in

           self.updateModelByAddingAReminder(at: indexPath)

        }
        setReminder.image = UIImage(named: "reminder-icon")
        return[setReminder]
    }else{

        let deleteAction = SwipeAction(style: .destructive, title: "Delete") { action, indexPath in

           self.updateModel(at: indexPath)

        }
        // customize the action appearance
        deleteAction.image = UIImage(named: "delete-icon")


       // return [setReminder, deleteAction]
        return [deleteAction]
    }

1 个答案:

答案 0 :(得分:0)

好的,我在您选择的单元格中发现了问题。 来自文件 内置的.destructive和.destructiveAfterFill扩展样式被配置为在调用动作处理程序时自动执行行删除(自动实现)。 您需要在editActionsForRowAt中为单元格使用破坏性样式。或使用其他选项,例如

func tableView(_ tableView: UITableView, editActionsOptionsForRowAt indexPath: IndexPath, for orientation: SwipeActionsOrientation) -> SwipeTableOptions {
    var options = SwipeTableOptions()
    options.transitionStyle = .border

    if orientation == .left{
        //or none
        options.expansionStyle = .selection
    }else{
        options.expansionStyle = .destructive
    }

    return options
}

希望有帮助。