Swift tableview, reloadRows после SwipeAction, невозможно снова провести по той же строке - PullRequest
0 голосов
/ 12 марта 2020

У меня есть tableView с swipeActions, и эти действия вызывают tableView.reloadRows, чтобы обновить мою таблицу.

Я заметил, что не могу снова провести только что обновленную строку после действия.

проблема была ли эта ячейка сохранять статистику той панели SwipeActions, которая отображается. Я думаю, что простой метод, который «проведет назад» по этой ячейке назад, решит мою проблему, но я не нахожу ничего.

(я не хочу перезагружать весь tableView)

func tableView(_ tableView: UITableView, 
    trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
     let removeAction = UIContextualAction(style: .normal, title: nil, handler: { _, _, _ in
        self.tableView.reloadRows(at: [indexPath], with: .automatic)
//            self.items.remove(at: indexPath.row)
//            self.tableView.deleteRows(at: [indexPath], with: .automatic)
     })
     removeAction.image = UIImage(named: "ic_garbage")!.scaleImageToFitSize(size: CGSize(width: 32.0, height: 32.0))
     removeAction.backgroundColor = UIColor.lightGray
     let actionModify = UIContextualAction(style: .normal, title: nil, handler: { _, _, _ in
        self.tableView.reloadRows(at: [indexPath], with: .automatic)
//            self.changeQty(indexPath)
     })
     actionModify.image = UIImage(named: "ic_exchange")!.scaleImageToFitSize(size: CGSize(width: 32.0, height: 32.0))
     actionModify.backgroundColor = UIColor.orange

     let toReturn = UISwipeActionsConfiguration(actions: [removeAction, actionModify])
     toReturn.performsFirstActionWithFullSwipe = false
     return toReturn
}

1 Ответ

1 голос
/ 12 марта 2020

Вы должны вызывать обработчик завершения. Ваши действия должны быть определены следующим образом ...

let action = UIContextualAction(style: .normal, title: "Hello") { (action, view, completion) in
    self.doSomething()
    completion(true)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...