2016-11-28 4 views
-1

Ich verwende eine Tabellenansicht, um Dateien aufzulisten. Und es funktioniert perfekt. Wenn ich jedoch zum Löschen nach links wische, wechselt die Tabellenansicht in den Bearbeitungsmodus und meine Bearbeitungsschaltfläche wird durch eine Abbrechen-Schaltfläche überschrieben. das ist auch perfekt. Aber wenn ich zurück wische, ohne zu löschen, sollte die Schaltfläche zurück zum Bearbeiten gehen, was nicht passiert. Gibt es einen Delegaten, der aufgerufen wird, wenn eine Tabellenansichtszelle zurückgesendet wird? dies ist der zugehörige CodeAktion festlegen, wenn Tabellenansichtszelle in einem UITableIview zurückgeschickt wird

- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
if ([[[NSUserDefaults standardUserDefaults]objectForKey:DOCUMENTDELETE]isEqualToString:ENABLED]) { 

return YES; 
} else { 
    return NO; 
} 
} 

-(void)tableView:(UITableView *)tableView willBeginEditingRowAtIndexPath:(NSIndexPath *)indexPath { 
[self.tableView setEditing:NO]; 
} 

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView 
     editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath { 
if (self.tableView.editing) { 
    return UITableViewCellEditingStyleDelete; 
} 
else { 
    self.navigationItem.rightBarButtonItem = nil; 
    self.navigationItem.rightBarButtonItem = self.cancelButton; 
    return UITableViewCellEditingStyleDelete; 
} 
} 

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

self.navigationItem.rightBarButtonItem = nil ; 
self.navigationItem.rightBarButtonItem = self.editButton; 
if (editingStyle == UITableViewCellEditingStyleDelete) { 
    NSString *cellText; 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath]; 
    cellText = selectedCell.textLabel.text; 
    NSString *documentsDirectory = [paths objectAtIndex:0]; 
    NSString *fileName =[NSString stringWithFormat:@"/Inbox/"]; 
    NSString *allFilesPath = [documentsDirectory stringByAppendingPathComponent:fileName]; 
    NSString *theactualFilePath = [allFilesPath stringByAppendingPathComponent:cellText]; 

    NSError *error; 

    _success = [[NSFileManager defaultManager] removeItemAtPath:theactualFilePath error:&error]; 
    [self.tableView setEditing:NO]; 
    if ([_filePathsArray count] == 0) { 
     [[NSUserDefaults standardUserDefaults] setObject:DISABLED forKey:NOMATCHFOUND]; 
     [[NSUserDefaults standardUserDefaults] setObject:@"1" forKey:ALLFILESDELETED]; 
     [[NSUserDefaults standardUserDefaults]synchronize]; 

    } 
    if (_success) { 
    } 
    else 
    { 
     NSLog(@"Could not delete file -:%@ ",[error localizedDescription]); 
    } 
} 

[self.tableView reloadData]; 

} 

dies der Code in ViewDidLoad ist:

if ([[[NSUserDefaults standardUserDefaults] objectForKey:DOCUMENTDELETE] isEqualToString:ENABLED]) { 
    if (self.tableView.editing){ 
     self.navigationItem.rightBarButtonItem = nil; 
     self.navigationItem.rightBarButtonItem = self.cancelButton; 
    }else { 
    self.navigationItem.rightBarButtonItem = nil; 
[self.navigationItem setRightBarButtonItem:self.editButton]; 
    }} else { 
     self.navigationItem.rightBarButtonItem = nil; 
    } 

Vielen Dank im Voraus

+0

Es wird besser sein, wenn Sie den Code veröffentlichen. –

+0

bearbeitet @ ArpitDongre –

+0

@ManeeshSharma: Wir brauchen den Code, der UITableView verwandt ist. – Poles

Antwort

1

Es klingt wie Sie einfach die delegierte Methode

tableView:didEndEditingRowAtIndexPath:

implementieren müssen

wo Sie fangen würden Die Tabellenansichtszelle wird vom Bearbeitungsstatus entfernt.

+0

Das hat perfekt funktioniert.! genau das, was ich wollte. Danke –

Verwandte Themen