Я нашел решение этой проблемы.
Чтобы установить действия для кнопок, вам нужно инициализировать 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])
}
Реализуйте метод делегата trailingSwipeActionsConfigurationForRowAt
, чтобы установить действия смахивания. Вы также можете сделать то же самое, если вам нужны кнопки при смахивании вправо, реализовав метод делегата leadingSwipeActionsConfigurationForRowAt
.
Настройка действия для вашей кнопки. В закрытии обработчика UIContextualAction
вы можете установитьlerController.
Звоните success(true)
при нажатии кнопки «ОК» в предупреждении.