如何根据IndexPath.row设置自定义UITableViewRowAction?

时间:2016-12-03 22:02:19

标签: ios swift uitableview uitableviewrowaction

我有一个

  • 的tableView(UITableView的)
  • customCell:UITableViewCell!
  • itemsArray:[Item]

我尝试根据IndexPath.row为UITableView中的单元格设置自定义操作。

func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath)
 -> [UITableViewRowAction]? {

  if !(itemsArray[indexPath.row].isReadOnly) {

    let editAction = UITableViewRowAction(style: .normal, title: "Edit") {
       (tableViewRowAction, indexPath) in
       print("Edit Item \(self.itemsArray[indexPath.row].caption)\n")
    } 
    return [editAction]
  } else {
    return []
  }
}

我尝试在UITableView中为单元格设置自定义操作,具体取决于IndexPath.row:

单元格出现问题,我想要没有操作(相应的项目有.isReadOnly = true)

我尝试在其他情况下返回nil和[],并且两种变体都有不相关的结果用于滑动: - nil - 删除项目的操作 - [] - 细胞滑动一点点,“取消擦拭”,而不是滑动停止在任何细胞中工作

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案:只需使用UITableView的canEditRowAt方法

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return !(items[indexPath.row].isReadOnly)
}