2014-10-04 2 views
37

У меня есть настраиваемый UITableViewRowAction и работает. Единственное, что я не могу решить, это как отклонить UITableViewRowAction после того, как действие было выбрано. Я уверен, что мне не хватает чего-то действительно очевидного. Вот моя текущая установка:Dismiss 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]; 
} 

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

ответ

67

Вы отклоняете действие в обработчике, который вызывается при нажатии на действие. The documentation описывает обработчик следующим образом:

Блок, выполняемый при нажатии пользователем кнопки, связанной с этим действием. UIKit делает копию блока, который вы предоставляете. Когда пользователь выбирает действие, представленное этим объектом, UIKit выполняет блок обработчика в основном потоке приложения.

Независимо, я полагаю, вы могли бы просто установить для вида таблицы editing значение false.

tableView.setEditing(false, animated: true) 
+0

Спасибо, я знал, что это будет что-то простое, как это. – User4

+0

@Mundi Как отображать действие строки в TableView в коде? –

+0

См. Код OP. – Mundi

6

Это работает для меня:

tableView.editing = NO;

1

Вызов tableView.setEditing(false, animated: true), похоже, работает только в определенное время. В конце концов, представление таблицы, похоже, переходит в состояние, когда оно больше не отображает действия редактирования.

Я нашел, что просто вызов tableView.reloadRows(at: [indexPath], with: .none) работает более надежно.

+0

Обратите внимание, что это не работает, если ячейка не имеет идентификатора повторного использования. Это может быть связано с тем, что 'UITableView' требует, чтобы две ячейки выполняли переход от одного состояния к другому (даже если анимация установлена ​​на' .none'). –

1

Он работает ми в Swift 3:

self.tableView.setEditing(false, animated: true)