2016-11-28 6 views
-1

Я использую tableview для списка файлов. И он отлично работает. Однако, когда я удаляю влево для удаления, табличное представление переходит в режим редактирования, и моя кнопка редактирования перезаписывается кнопкой отмены. это тоже прекрасно. Но когда я прокручиваю назад без удаления, кнопка должна вернуться к редактированию, чего не происходит. Есть ли какой-либо делегат, который вызывается, когда ячейка таблицы просматривается обратно? это соответствующий кодУстановить действие, когда ячейка таблицы видна обратно в UITableIview

- (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]; 

} 

это код в ViewDidLoad:

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; 
    } 

Заранее спасибо

+0

Будет лучше, если вы разместите код. –

+0

отредактировал @ ArpitDongre –

+0

@ManeeshSharma: Нам нужен код, который связан с UITableView. – Poles

ответ

1

Это звучит, как вы просто нужно реализовать метод делегата

tableView:didEndEditingRowAtIndexPath:

, в котором вы сможете поймать ячейка представления таблицы не установлена ​​из состояния редактирования.

+0

Это сработало отлично! просто то, что я хотел. Спасибо –

Смежные вопросы