Swift 5: перемещение ячейки из одного раздела в другой раздел в TableView - PullRequest
0 голосов
/ 28 апреля 2020

Я занимаюсь практикой табличного представления. И я хочу реализовать функцию, которая перемещает одну ячейку из одного раздела в другой раздел с помощью метода moveRowAt. Когда я перемещаю / размещаю ячейку в том же разделе, она работает нормально. Однако, когда я перемещаю ячейку из одного раздела в другой, он выдаст мне такую ​​ошибку: enter image description here

Это функция moveRowAt:

    override func tableView(_ tableView: UITableView, moveRowAt fromIndexPath: IndexPath, to: IndexPath)
    {
        // Move data
        let todo = todos[fromIndexPath.section][fromIndexPath.row]
        todos[fromIndexPath.section].remove(at: fromIndexPath.row)
        // move from one section to another section
        if to.section != fromIndexPath.section
        {
            todos[to.section].insert(todo, at: to.row)
            //        Update View
            tableView.beginUpdates()
            tableView.moveRow(at: fromIndexPath, to: to)
            tableView.endUpdates()
        }
        else
        {
            todos[fromIndexPath.section].insert(todo, at: to.row)
            //        Update View
            tableView.beginUpdates()
            tableView.moveRow(at: fromIndexPath, to: to)
            tableView.endUpdates()
        }

    }

Объявление todos:

struct ToDo {
    var name = ""
    var checked = false
    var details: String = ""
}

var todos: [[ToDo]]

Спасибо за помощь и за то, что поделились вашей идеей!

1 Ответ

0 голосов
/ 28 апреля 2020

Вы не должны вызывать

tableView.moveRow(at: fromIndexPath, to: to)

самостоятельно, так как это вызовет рекурсивную l oop, только сделайте удаление и вставьте только

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...