スポンサーリンク
ちゃんとDelegateをセットしているのに、UITableViewのタップイベント
tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
が発動しない場合、原因はきっと、UITableViewのisEditingを有効にしているせいです。
テーブルにデータの閲覧機能の他に、「削除機能も追加」しようと、isEditing=trueをセットすると、削除ボタンが表示されるようになりますが、タップイベントが効かなくなります。
「単純に削除だけ入れたい」場合はisEditingはfalseにし、次のデリゲートメソッドでdeleteを返せば、横スワイプでの削除が有効になり、タップも使えるので便利です。
func tableView(_ tableView: UITableView, editingStyleForRowAt indexPath: IndexPath) -> UITableViewCell.EditingStyle {
return .delete
}
isEditing=trueのまま、タップもしたい場合
並べ替えも追加したい、もしくは、どうしても削除ボタンを表示しておきたい場合は、cellに対してUITapGestureRecognizerを追加することで、isEditing=trueのままタップイベントをハンドリングできるようになります。
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(onTap))
cell.contentView.addGestureRecognizer(tapGesture)
スポンサーリンク