我正在使用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]
}
答案 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
}
希望有帮助。