2013-03-26 6 views
6

Ich habe den obigen Code in meiner App verwendet. Der Bearbeitungsteil funktioniert einwandfrei, aber die Lösch-Schaltfläche erscheint nur, wenn wir in einer Zelle von links nach rechts wischen. Jetzt habe ich ein Menü, das sich von links nach rechts wie Facebook öffnet. Wie kann ich sicherstellen, dass die Schaltfläche zum Löschen angezeigt wird, wenn der Benutzer von rechts nach links wischt.Möchten Sie die Schaltfläche zum Löschen von rechts nach links streichen in UITableView

Antwort

2

Diese funktionieren könnte. Setzen Sie diesen Code in awakeFromNib oder init:

UISwipeGestureRecognizer *swipeDelete = [[UISwipeGestureRecognizer alloc]  initWithTarget:self action:@selector(handleSwipeDelete:)]; 
[swipeDelete setDirection: UISwipeGestureRecognizerDirectionLeft]; 
[yourTableView addGestureRecognizer:swipeDelete]; 

dann in handleSwipeDelete organisieren Ihre Zelle und zeigen Schaltfläche Löschen. Sie müssen wahrscheinlich den Zellenstatus handhaben und ihn in swipeLeft/swipeRight ändern.

+0

ich diesem einen Versuch geben werde. Wenn Sie die Schaltfläche "Löschen" anzeigen, können wir die Standardlöschtaste programmgesteuert anzeigen? Wenn ja, wie? Danke :) – ScarletWitch

+1

Sie könnten versuchen, den Tabellenzellentyp auf 'UITableViewCellEditingStyleDelete' zu ​​setzen, wenn Sie nach links streichen. Oder erstellen Sie eine Unterklasse von 'UITableViewCell' und zeichnen Sie diese Zelle statt der Standardzelle für diese Zeile. – Gossamer

+0

Ja. Das macht den Job genau richtig. Danke Gossamer. :) – ScarletWitch

0

sieht aus wie Sie das Verhalten von UITableViewCell anpassen müssen, ich habe nie bemerkt, dass Apple das Verhalten nach swiping rechts nach links geliefert hat ....

6

Bitte nicht stellen Sie den Delegierten UISwipeGestureRecognizer

schreiben diese in viewDidLoad oder wo Sie Ihre UITableView

UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(callYourMethod:)]; 
swipeRight.direction = UISwipeGestureRecognizerDirectionRight; 
[self.tblView addGestureRecognizer:swipeRight]; 

Kein Bedarf eingeleitet haben alles in der folgenden Methode zu schreiben.

- (void)callYourMethod:(UISwipeGestureRecognizer *)recognizer 
{ 

} 
+0

Danke Manohar. Ich habe die Antwort bekommen, indem ich deine und @ Gossamers Idee kombiniert habe. Danke euch beiden. Ihr Leute habt mir eine Menge Arbeit erspart. :) – ScarletWitch

1

können Sie es bekam von two Methods of UITableVie.

// This only needs to be implemented if you are going to be returning NO 
// for some items. By default, all items are editable. 
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Return YES if you want the specified item to be editable. 
    return YES; 
} 

// Override to support editing the table view. 
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     //add code here for when you hit delete 
    //When you remove a cell of your tableview, you also has to remove your array object at index x 
    }  
} 

mit dem Objekt Nach dem Entfernen. Sie müssen die UITableView neu laden.

[self.tableView reloadData]; 

Weitere Informationen Read This OfficialDocumentaion.

+0

Ja danke @iPatel. Aber wie gesagt. Die Geste konnte nicht gelesen werden, denn ich rutsche im Menü bei der gleichen Veranstaltung. Das funktioniert also nicht. Aber trotzdem danke. :) – ScarletWitch

Verwandte Themen