Я добавил, чтобы удалить функцию с использованием
override func tableView(_ tableView: UITableView,
trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath)
-> UISwipeActionsConfiguration?
Я вызываю предупреждение с действиями отклонить / подтвердить.После отклонения я хочу закрыть меню действий смахивания.
override func tableView(_ tableView: UITableView,
trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let deleteClosure:UIContextualAction.Handler = {
(action:UIContextualAction,
view:UIView,
completionHandler:(Bool) -> Void) in
let alert = self.confirmDeletion({ _ in
let row = indexPath.row;
let removed = self.logList.remove(at: row);
self.deleteLogEntry(removed);
//
tableView.reloadData();
//
}, declineBlock: {_ in
tableView.reloadData();// this hides it but w/o animation
});
DispatchQueue.main.async {
self.present(alert, animated: true, completion: nil);
}
}
let deleteAction = UIContextualAction(style: .destructive, title: "Delete", handler: deleteClosure);
return UISwipeActionsConfiguration(actions: [deleteAction]);
}
До сих пор я обнаружил, что перезагрузка данных таблицы закроет меню скользящего смещения, но без анимации, которая выглядит странно.Есть ли способ сообщить ему об отклонении с помощью анимации?
** Примечание о дубликате ** Помечено как дубликат к вопросу, который относится к отклонению, не работающему, поскольку ожидаемая строка была удалена, но это не такВот.Я хочу отклонить завершающий удар, когда пользователь отменяет удаление, а строка НЕ удаляется.
Что я уже пробовал:
tableView.setEditing(false, animated: true);
- без видимой разницы tableView.reloadRows(at: [indexPath], with: UITableView.RowAnimation.automatic);
- строка была перемещена вправо с анимацией, но кнопка перекрывалась tableView.resignFirstResponder();
- без видимой разницы (пришлось попробовать) tableView.reloadTable()
- пролистывание менюУволен, но без анимационного эффекта