Подтвердить что ты не робот

Отклонить 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];
}

Спасибо за любой совет.

4b9b3361

Ответ 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)