Как отклонить контекстное меню действия смахивания при отмене - PullRequest
0 голосов
/ 12 марта 2019

Я добавил, чтобы удалить функцию с использованием

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() - пролистывание менюУволен, но без анимационного эффекта
...