0

私は

  • tableView(UITableView)
  • customCell: UITableViewCell!
  • itemsArray: [アイテム]

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 []
  }
}

IndexPath.row に応じて、UITableView のセルにカスタム アクションを設定しようとしました。

問題は、アクションなしにしたいセルで発生します(対応するアイテムには.isReadOnly = trueがあります)

それ以外の場合は nil と [] を返そうとしましたが、どちらのバリアントもスワイプに関係のない結果になりました: - nil – アイテムの削除アクションを表示します - [] – セルを少しスワイプし、「スワイプを解除」して、スワイプがどのセルでも機能しなくなります

4

1 に答える 1

0

私は解決策を見つけました:UITableViewのcanEditRowAtメソッドを使用するだけです

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return !(items[indexPath.row].isReadOnly)
}
于 2016-12-03T22:36:29.930 に答える