Переопределить setEdit в UITableViewController: откуда поступает вызов? - PullRequest
0 голосов
/ 30 августа 2018

Когда пользователь нажимает на Edit или Done в верхнем левом углу UITableViewController, мне нужно изменить некоторые вещи (в дополнение к тому, что Apple делает автоматически).

Я переопределяю setEditing(), делаю там визуальные изменения. Работает нормально.

Метод setEditing() из UITableViewController также вызывается, когда пользователь проводит пальцем влево по UITableViewCell.

Здесь возникает проблема: как и Apple, мне нужно делать важные вещи по-другому, когда пользователь проводит пальцем по ячейке.

Как узнать, какое действие пользователя (нажатие на изменение или пролистывание в ячейке) вызвало вызов setEditing()?

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Вдохновленный попыткой ответа @ bbarnhart:

При переопределении tableView(_:willBeginEditingRowAt:) тогда setEditing(true) не вызывается в начале пролистывания ячейки.

При переопределении tableView(_:didEndEditingRowAt:) тогда setEditing(false) не вызывается в конце редактирования ячейки.

Так что только наличие этих переопределений решает проблему.

0 голосов
/ 30 августа 2018

Чтобы определить, вызвал ли пролистывание редактирование, добавьте в свой код обратный вызов UITableViewDelegate tableView(_:willBeginEditingRowAt:). Установите внутренний флаг в этой функции и, когда вызывается setEditing, проверьте этот флаг.

...