質問: UITableViewに編集モードを実装すると、「編集」ボタンを押下しなくても、右から左のスワイプで削除できるようになりますが 編集モードを押下した場合のみ削除可能にしたいです。 要するに、右から左のスワイプで削除できないようにしたいのですが、 方法ありますでしょうか。 調べるとできるようなのですが、具体的な方法が見つかりませんでした。 編集ボタンを押下していないのに、編集(削除)できてしまうことが 変だと思うのですが。。 Swift 3にてよろしくお願いいたします。
回答: `UITableViewDelegate`の`tableView(_:editingStyleForRowAt:)`をオーバーライドして、条件によって返す値を変更します。 テーブルビューが編集モードのときだけ削除のボタンを表示し、横方向にスワイプした時には何も表示しないとするには、下記のように`tableView.isEditing`プロパティをチェックして、編集モードなら`.delete`を返し、そうでなければ`. none`を返すようにします。 ``` override func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCellEditingStyle { if tableView.isEditing { return .delete } return .none } ``` このメソッドは行ごとにセルの編集スタイルをカスタマイズできます。実装しなかった場合は、デフォルトで`.delete`と解釈されます。そのため、何もしなければ編集モードやスワイプの際に削除ボタンが表示されます。