Отображать оповещение без анимации кнопок прокрутки назад - PullRequest
0 голосов
/ 15 января 2019

У меня есть tableView, где я хочу иметь кнопку редактирования и удаления, когда пользователь проводит ячейку влево. Для этого я использую метод делегата tableView trailingSwipeActionsConfigurationForRowAt. Это работает нормально, он представляет две кнопки, как и ожидалось. Я хочу подать уведомление о подтверждении, когда пользователь нажимает «Удалить» Это также работает нормально, но когда появляется предупреждение, ячейка возвращается в исходное положение. Поэтому кнопки удаления, редактирования больше не видны. Это то, что я не хотел бы иметь.

Есть ли способ предотвратить анимацию ячейки назад при подаче предупреждения?

1 Ответ

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

Я нашел решение этой проблемы. Чтобы установить действия для кнопок, вам нужно инициализировать UIContextualAction класс. Этот класс имеет обработчик, который имеет значение типа bool типа (Bool) -> Void. Таким образом, в основном, когда вы устанавливаете закрытие обработчика, вы можете возвращать true или false, что означает, что действие завершено. Поэтому, если вы вызываете завершение, когда пользователь нажал кнопку оповещения, кнопки будут оставаться видимыми до тех пор, пока оповещение не будет отклонено.

Код, который я пробовал и он работает, следующий:

// 1
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
    //2
    let action = UIContextualAction(style: .normal, title: "") { _, _, success in
        let alertController = UIAlertController(title: "Title", message: "Message", preferredStyle: .alert)
        let alertAction = UIAlertAction(title: "OK", style: .cancel, handler: { _ in
            //3
            success(true)
        })
        alertController.addAction(alertAction)
        self.present(alertController, animated: true, completion: nil)
    }
    return UISwipeActionsConfiguration(actions: [action])
}
  1. Реализуйте метод делегата trailingSwipeActionsConfigurationForRowAt, чтобы установить действия смахивания. Вы также можете сделать то же самое, если вам нужны кнопки при смахивании вправо, реализовав метод делегата leadingSwipeActionsConfigurationForRowAt.

  2. Настройка действия для вашей кнопки. В закрытии обработчика UIContextualAction вы можете установитьlerController.

  3. Звоните success(true) при нажатии кнопки «ОК» в предупреждении.

...