2014-10-04 7 views
37

Mam niestandardową konfigurację UITableViewRowAction i działa. Jedyne, czego nie mogę zrozumieć, to, jak odrzucić UITableViewRowAction po wybraniu akcji. Jestem pewien, że brakuje mi czegoś naprawdę oczywistego. Oto moja aktualna konfiguracja:Odrzuć 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]; 
} 

Dzięki za radę.

Odpowiedz

67

Odrzucasz akcję w programie obsługi, która jest wywoływana po dotknięciu akcji. The documentation opisuje program obsługi w następujący sposób:

Blok do wykonania, gdy użytkownik dotknie przycisku związanego z tą akcją. UIKit tworzy kopię bloku, który podasz. Gdy użytkownik wybierze akcję reprezentowaną przez ten obiekt, UIKit wykona swój blok obsługi w głównym wątku aplikacji.

Niezależnie, przypuszczam, że można ustawić właściwość false dla wartości wyświetlanych w tabeli: editing.

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

Dzięki, wiedziałem, że będzie to coś tak proste. – User4

+0

@Mundi Co powiesz na pokazanie akcji wiersza w TableView w kodzie? –

+0

Zobacz kod OP. – Mundi

6

Działa to dla mnie:

tableView.editing = NO;

1

Wywołanie tableView.setEditing(false, animated: true) wydaje się działać tylko przez pewien czas. Ostatecznie widok tabeli wydaje się być w stanie, w którym nie wyświetla już akcji edycji.

Zauważyłem, że po prostu wywołanie tableView.reloadRows(at: [indexPath], with: .none) działa bardziej niezawodnie.

+0

Należy zauważyć, że to nie działa, jeśli komórka nie ma identyfikatora ponownego użycia. Może tak być, ponieważ 'UITableView' wymaga dwóch komórek do przejścia z jednego stanu do drugiego (nawet jeśli animacja jest ustawiona na' .none'). –

1

To działa dla MI w Swift 3:

self.tableView.setEditing(false, animated: true) 
Powiązane problemy