У меня есть tableView, который перечисляет содержимое моего каталога документов. У меня есть несколько почтовых файлов в этом. Если я касаюсь файла в tableView, соответствующий zip-файл распаковывается и извлекается во временную директорию (newFilePath
в моем случае). Разархивированное содержимое указано в следующем табличном представлении. Когда я нажимаю кнопку «Назад», содержимое каталога снова отображается в списке.
Например, предположим, что в моем каталоге документов есть четыре zip-файла.
songs.zip, videos.zip, files.zip, калькуляция.zip
Когда я запускаю приложение, все четыре файла перечислены в табличном представлении. Когда я касаюсь songs.zip, этот файл извлекается в newFilePath
, а его содержимое передается в следующий табличный вид. Когда я возвращаюсь назад, предыдущий tableView, то есть четыре файла в каталоге документов снова отображаются в списке. Все отлично работает.
Проблема в том, что извлеченные файлы в newFilePath
остаются там сами. Они занимают память без необходимости. Я хочу, чтобы они удалялись с этого пути, когда я касаюсь кнопки «назад», т. Е. Я хочу сделать newFilePath
пустым при касании кнопки «Назад».
Я пытался это сделать. Но бесполезно. Я попробовал removeItemAtPath:
метод в viewWillAppear:
, а также в viewWillDisappear:
. Но это не сработало в обоих случаях.
Есть ли другой способ отследить действие кнопки назад? Я хочу, чтобы событие произошло, когда нажата кнопка «Назад». Поэтому, пожалуйста, помогите мне, поделитесь своими идеями. Вот мой код для подтверждения.
Это мой didSelectRowAtIndexPath:
NSString *filePath = //filePath
if([[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
NSLog(@"File exists at path: %@", filePath);
} else {
NSLog(@"File does not exists at path: %@", filePath);
}
ZipArchive *zip = [[ZipArchive alloc] init];
NSString *newFilePath = //newFilePath
[[NSFileManager defaultManager] createDirectoryAtPath:newFilePath withIntermediateDirectories:NO attributes:nil error:nil];
BOOL result = NO;
if([zip UnzipOpenFile:filePath]) {
//zip file is there
if ([zip UnzipFileTo:newFilePath overWrite:YES]) {
//unzipped successfully
NSLog(@"Archive unzip Success");
result= YES;
} else {
NSLog(@"Failure To Extract Archive, maybe password?");
}
} else {
NSLog(@"Failure To Open Archive");
}
iDataTravellerAppDelegate *AppDelegate = (iDataTravellerAppDelegate *)[[UIApplication sharedApplication] delegate];
//Prepare to tableview.
MyFilesList *myFilesList = [[MyFilesList alloc] initWithNibName:@"MyFilesList" bundle:[NSBundle mainBundle]];
//Increment the Current View
myFilesList.CurrentLevel += 1;
viewPushed = YES;
//Push the new table view on the stack
myFilesList.directoryContent = [AppDelegate getTemporaryDirectoryItemList:newFilePath];
[myFilesList setTitle:detailedViewController.strName];
[self.navigationController pushViewController:myFilesList animated:YES];
[myFilesList release];
Спасибо за ваши ответы.