2010-09-17 19 views
10

Die Wischfunktion zum Löschen funktioniert in meiner Tabellenansicht nicht. Ich habe den commitEditingStyle-Delegaten und die Schaltfläche Bearbeiten in der Navigationsleiste implementiert. Wenn der Benutzer auf die Schaltfläche Bearbeiten klickt, werden die Schaltflächen zum Löschen und Hinzufügen entsprechend angezeigt. Beim Überstreichen wird die Schaltfläche zum Löschen jedoch nicht angezeigt, und es scheint, als würde sie den Swipe nicht als Aufruf für die Methode setEditing erkennen.Wischen zum Löschen funktioniert nicht

ich implementiert dann willBeginEditingRowAtIndexPath und didEndEditingRwoAtIndexPath Delegierten wie folgt:

-(void)tableView:(UITableView*)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath 

{ 
NSLog(@"WILL BEGIN EDITING"); 

[self.tableView setEditing:YES animated:YES]; 

} 


-(void)tableView:(UITableView*)tableView didEndEditingRowAtIndexPath:(NSIndexPath *)indexPath 

{ 

[self.tableView setEditing:NO animated:YES]; 

} 

Allerdings bedeutet dies keine Wirkung entweder. Was könnte das mögliche Problem sein? Ich habe Multitouch für die Tabellenansicht im IB aktiviert und jede Zelle verfügt über ein DetailDisclosureButton-Zubehör.

Antwort

7

Für Swipe-to-löschen-Funktionalität, haben Sie

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) 
     ; // Delete. 
} 

EDIT zu implementieren: ich die Frage nicht gut genug gelesen.

Ich habe bemerkt, dass, um einen Swipe ziehen im Simulator muss ich drücken und für eine Sekunde anhalten, während es die Zelle auswählt, und nur dann kann ich rechts erfolgreich wischen.

+0

Ja, ich habe das implementiert. Ich habe es oben erwähnt. Ich habe momentan keinen Zugang zu einem Gerät und teste es am Simulator. Könnte es ein Problem mit dem Simulator sein? – Nathan

+0

Also hast du. Es tut uns leid. Überprüfen Sie meine bearbeitete Antwort nur für den Fall. Der Simulator hat kein 1-1-Touch-Verhalten, insbesondere keine Geschwindigkeit. –

+0

Versuchte das am Simulator. Funktioniert nicht. Außerdem wurde die App auf einem iPod Touch mit 3.1.2 installiert. Wischen zum Löschen funktioniert auch nicht. Sehr verwirrend. Ich frage mich, ob ich bei einigen Delegate-Implementierung fehlt? – Nathan

0

umgesetzt haben Sie die tableView:editingStyleForRowAtIndexPath: Methode und haben es UITableViewCellEditingStyleDelete

+0

Ja, ich tat es. Aber da war etwas Besonderes, das dieses Problem verursacht hat. – Nathan

+0

Überprüfen Sie meine Antwort oben. – Nathan

+0

froh, dass ich in der Lage war, Sie auf das richtige Stück Code zu bekommen ... Debugging-Probleme wie diese sind in der Regel schwierig –

4

kehre ich in der Tableview die folgenden Aktionen ausführen: Methode delegieren: editingStyleForRowAtIndexPath -

if (self.editing == NO || !indexPath) 
{ 
    return UITableViewCellEditingStyleNone; 
} 

Dies sollte Bearbeitungsstil keine zurückzukehren, wenn Kein IndexPfad wurde ausgewählt. Aus irgendeinem Grund wurde immer dann, wenn eine Wischaktion ausgeführt wurde, diese if-Bedingung ausgeführt. Beim Kommentieren des obigen Code-Snippets funktionierte die Wisch-zu-Lösch-Aktion gut.

Vielen Dank für Ihre Hilfe.

4

Sie werden implementieren müssen:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath; 


- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath; 

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath; 

Mit diesen drei Dinge, die Sie sollten gut zu gehen. . (Ich habe den commitEditingStyle aus und es funktionierte nie

+1

Ich habe diese 3 Delegate Methoden, aber nicht funktioniert. –

1

Der Schlüssel, um es Arbeit zu machen ist, zu implementieren:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath; 

Und denken Sie daran es innen zu setzen „UITableViewDataSource“ statt „UITableViewDelegate

-2

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath Delegatmethode müssen auch Swipe-Funktionalität arbeiten implementieren.

4

Wenn alle anderen Ratschläge zu tun Versuchen Sie nicht, zu überprüfen, ob Sie in Ihrem Code einen Pan-Gesten-Erkenner haben. Es wird nicht funktionieren, wenn Sie solche Dinge in einer unterlegenden Ansicht haben.

+0

Hatte das gleiche Problem, aber es war mit UITapGesture –

+0

Sie sind ein Genie! Ich hatte ein Problem mit einem schwer zu ziehenden Schieberegler für ein paar Monate und jetzt mit einem TableviewCell, und das Problem war ein Pan Gestenerkennung in einem Framework, das ich verwendete. –

Verwandte Themen