Есть ли способ узнать, когда UITableViewCell удаляется из UITableView? - PullRequest
0 голосов
/ 18 декабря 2018

Я показываю UITableView, который управляется RxRealmDataSources .

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

IsЕсть ли такой способ, что всякий раз, когда строка удаляется из таблицы, вызывается функция с indexpath удаленной строки?

Edit -

Пользовательский интерфейс ячейки UITableViewв моем приложении зависит от 2 вещей -

  • Объект данных, который выбирается из области БД ( info )
  • Позиция индекса строки

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

Если единственный способ обновления БД - это прямое действие пользователя, тоЯ мог бы использовать метод func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath), чтобы получить indexPath ячейки, которая должна быть удалена, и обновить интерфейс следующей ячейки.

Однако БД синхронизируется с облакоми БД привязана к представлению таблицы, так что я не могу контролировать, когда ячейки добавляются или удаляются,Именно по этой причине я хотел узнать, есть ли способ узнать, когда ячейка удаляется из UITableView

Ответы [ 3 ]

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

Мне удалось решить эту проблему путем создания подкласса класса UITableView и переопределения метода func deleteRows(at indexPaths: [IndexPath], with animation: UITableView.RowAnimation).

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

В комментарии вы сказали:

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

Поскольку вы пометили RxSwift, решение состоит в том, чтобы использовать itemDeleted как в:

tableView.rx.itemDeleted
    .subscribe(onNext: { print("delete item at index path \($0) from your model.")})
    .disposed(by: bag)

Если вы не ищете Rx-решение, то ваш вопрос дублирует:

Добавить пролистывание для удаления UITableViewCell

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

Из-за возможности повторного использования ячеек в UITableView ячейки фактически не удаляются до тех пор, пока сама таблица не будет освобождена.

Я мог бы предположить, что, удаляя ячейку, вы имеете в виду исчезновение ячейки с экрана.В этом случае вам может помочь следующая функция UITableViewDelegate (вызывается, когда ячейка больше не видна):

func tableView(_ tableView: UITableView, didEndDisplaying cell: UITableViewCell, forRowAt indexPath: IndexPath)
...