Как удалить данные из массива по нажатию кнопки закрытия - PullRequest
0 голосов
/ 17 февраля 2019

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

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

tblSideNav.deleteRows(at: indexPaths, with: .fade) 

, как указано выше, начало выполнения приложения вызывает сбой

 var menusArray = [sideNavStruct(isOpend: true, menuImg: "user", menuTitle: "Profile", subMenu: ["My Profile", "Distributor Profile"]), sideNavStruct(isOpend: true, menuImg: "user", menuTitle: "Reports", subMenu: ["Stock Report", "NFR Report", "RTD”])]

    @objc func handleOpenCloseCell() {
    let section = 0
    var indexPaths = [IndexPath]()
    for row in menusArray[section].subMenu.indices {
        let indexPath = IndexPath(row: row, section: section)
        indexPaths.append(indexPath)
    }
    print(indexPaths.count)
    print(menusArray[section].subMenu[0])
    menusArray[section].subMenu[0].removeAll()
    tblSideNav.deleteRows(at: indexPaths, with: .fade)
}

сбой моего приложения на tblSideNav.deleteRows(at: indexPaths, with: .fade):

Invalidupdate: недопустимое количество строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (7), должно быть равно количеству строк, содержащихся в этом разделе до обновления (2), плюс или минус количествостроки вставлены или удалены из этого раздела (0 вставлено, 2 удалено) и плюс или минус количество строк, перемещенных в или из этого раздела (0 перемещено, 0 удалено).

Яне удалось найти проблему

1 Ответ

0 голосов
/ 17 февраля 2019

Прежде всего, вы вызываете deleteRows без beginUpdates и endUpdates, что необходимо.

tableView.beginUpdates()
tableView.deleteRows(at: indexPaths, with: .fade)
tableView.endUpdates()

Та же самая ошибка может произойти, если ваша функция делегата не возвращает правильное количество строк после обновления.

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return rowCount
}

Я считаю, что лучше было бы изменить / очистить переменную, в которой вы храните информацию / данные о ваших строках, и просто вызвать reloadData ().

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