我已经为表格视图单元实现了滑动操作,它们是两个操作:Accept
和Reject
。
第一次滑动时,它必须出现;第二次滑动单元格时,它不应打开。
单元格的滑动动作必须处于禁用模式。
答案 0 :(得分:1)
首先,您应该跟踪与之交互的单元格的indexPath。
private var disabledCellsIndexPath = [IndexPath]()
然后在用于配置滑动操作(this is the new iOS 11 API)的方法中:
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let action = UIContextualAction(style: .normal, title: "Action Title", handler: { _, _, completionHandler in
// DO WHAT YOU WANT HERE
// …
// This is where you specify that this specific cell should be 'disabled'
self?.disabledCellsIndexPath.append(indexPath)
completionHandler(true)
})
return UISwipeActionsConfiguration(actions: [action])
}
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return !disabledCellsIndexPath.contains(indexPath)
}
答案 1 :(得分:0)
如果我正确理解了您的问题,请遵循以下概括性思想
您可以在应用程序结束数据库中管理该indexPath的标志。每当需要打开或禁用它(即管理它)时,都可以启用/禁用该indexPath的编辑操作。
答案 2 :(得分:0)
在需要swipe Enable
时使用allowEdit标志。否则将其设为假。
var allowEdit: Bool = true
func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return allowEdit
}
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]?
{
if allowEdit{
/*to perform Accept and Reject action on row*/
}
}