Как выбрать другую строку сразу после удаления строки в tableView (Swift) - PullRequest
0 голосов
/ 03 декабря 2018

Я удаляю строку и хочу получить следующее поведение:

  1. Если я удаляю выбранную строку, мне нужно автоматически выбрать другую строку.
  2. А также еслиУ меня возникает дополнительная проблема: когда я выполняю удаление, целевая строка, которую нужно удалить, выбирается автоматически, мне не нужно выбирать ее, поскольку я хочу только удалить ее.

сейчас главный вопрос 1.

Я понимаю, что, возможно, строка: 0 больше не существует, но сейчас это не главное, я просто упростил код, чтобы было удобнее обсуждать этот вопрос.Я попытался выполнить executeBatchUpdates и попытался переместить selectRow (at: section :) также к закрытию завершения, выбор строки тоже не работает.

selectRow отлично работает после функции insertRows, поэтому я в замешательстве.

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {

        tableView.beginUpdates()
        tableView.deleteRows(at: [indexPath], with: .fade)
        tableView.endUpdates()

        tableView.selectRow(at: IndexPath(row: 0, section: 0), animated: false, scrollPosition: .middle)

    }
}

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Хорошо, я нашел решение для 1-го вопроса (просто подумал, что такая функция может существовать, и набрал didrowat , и xcode предложил это didEndEditingRowAt :)

override func tableView(_ tableView: UITableView, didEndEditingRowAt indexPath: IndexPath?) {
    tableView.selectRow(at: IndexPath(row: 0, section: 0), animated: true, scrollPosition: .middle)
}

Теперь на первую часть вопроса дан ответ, я вставил туда выделение.

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

0 голосов
/ 03 декабря 2018

Как я понял ваш вопрос, найдите это решение:

func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        tableView.beginUpdates()
        tableView.deleteRows(at: [indexPath], with: .fade)
        tableView.endUpdates()
        tableView.selectRow(at: indexPath, animated: true, scrollPosition: .none)
    }
}

Передайте indexPath при удалении строки и после endUpdates, вам просто нужно установить тот же indexPath, что и SelectedRow.

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