Оказывается, виновником было следующее
override func setEditing(_ editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
if !editing {
rowSelectionState.removeAll()
loadData()
}
refreshView()
}
В частности, вызов refreshView()
, который содержит вызов tableView.reloadData()
, должен быть внутри блока if !editing { ... }
. Если нет, то когда инициируется действие смахивания, действие смахивания вызывает setEditMode(true, ...)
, вызывая, таким образом, tableView.reloadData()
, что портит способность UISwipeActionsConfiguration
правильно отображаться.
Таким образом, вышеприведенное должно выглядеть так:
override func setEditing(_ editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
if !editing {
rowSelectionState.removeAll()
loadData()
refreshView()
}
}