Проведите, чтобы удалить без подтверждения на UITableview - PullRequest
0 голосов
/ 31 августа 2018

У меня есть таблица с данными в реальном времени, используя websocket. Табличное представление обновляет ячейку (или строку) каждые две секунды.

Я хочу реализовать функцию удаления (не показывая кнопку удаления), потому что каждые две секунды я вызываю строки перезагрузки, пытаясь удалить конкретную строку, выравнивание табличного представления свернулось. Может ли кто-нибудь помочь в этом?

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Swift 4

func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
        return true
}

func tableView(_ tableView: UITableView, commit editingStyle:   UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
        if (editingStyle == .delete) {
            data.remove(at: indexPath.row)
            tableView.beginUpdates()
            tableView.deleteRows(at: [indexPath], with: .middle)
            tableView.endUpdates()
        }
}
0 голосов
/ 31 августа 2018

Вы можете добавить UISwipeGestureRecognizer к вашему TableViewCell, чтобы сделать это.

Например

let swipeToDeleteGesture = UISwipeGestureRecognizer(target: self, action: #selector(deleteCellWithoutConfirm(gesture:)))
swipeToDeleteGesture.direction = .left
your_cell.addGestureRecognizer(swipeToDeleteGesture)

и обработать функцию удаления

@objc func deleteCellWithoutConfirm(gesture: UIGestureRecognizer) {
    guard let cell = gesture.view as? UITableViewCell,
        let indexPath = tableView.indexPath(for: cell) else {
        return
    }
    // delete your data first, then reload tableView
    your_data.remove(at: indexPath.row)
    tableView.reloadSections(IndexSet(integer: 0), with: UITableViewRowAnimation.fade)
}
...