Отклонить UITableViewRowAction
У меня настраивается и работает пользовательский UITableViewRowAction. Единственное, что я не могу решить, это как отклонить UITableViewRowAction после того, как действие было выбрано. Я уверен, что мне не хватает чего-то действительно очевидного. Вот моя текущая настройка:
func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
var moreRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "In", handler:{action, indexpath in
//Some code to execute here
});
moreRowAction.backgroundColor = UIColor(red: 0.298, green: 0.851, blue: 0.3922, alpha: 1.0)
return [moreRowAction];
}
Спасибо за любой совет.
Ответы
Ответ 1
Вы отклоняете действие в обработчике, который вызывается при нажатии на действие. Документация описывает обработчик следующим образом
Блок для выполнения, когда пользователь нажимает кнопку, связанную с этим действием. UIKit делает копию блока, который вы предоставляете. Когда пользователь выбирает действие, представленное этим объектом, UIKit выполняет блок обработчика в основном потоке приложений.
Независимо, я полагаю, вы могли бы просто установить для представления таблиц editing
значение false.
tableView.setEditing(false, animated: true)
Ответ 2
Это работает для меня:
tableView.editing = NO;
Ответ 3
Вызов tableView.setEditing(false, animated: true)
кажется, работает только некоторое время. В конце концов, представление таблицы, похоже, переходит в состояние, когда оно больше не отображает действия редактирования.
Я обнаружил, что просто вызов tableView.reloadRows(at: [indexPath], with: .none)
работает более надежно.
Ответ 4
Он работает для mi в Swift 3:
self.tableView.setEditing(false, animated: true)