ドキュメントディレクトリの内容を一覧表示するtableViewがあります。その中にいくつかのzipファイルがあります。tableView内のファイルに触れると、対応するzipファイルが解凍され、一時ディレクトリ(newFilePath
私の場合)に抽出されます。解凍された内容は、次のtableViewに一覧表示されます。戻るボタンをタッチすると、ディレクトリの内容が再び表示されます。
たとえば、ドキュメントディレクトリに4つのzipファイルがあるとします。
songs.zip、videos.zip、files.zip、calculation.zip
アプリケーションを実行すると、4つのファイルすべてがtableViewに一覧表示されます。songs.zipをタッチすると、このファイルがに抽出され、newFilePath
その内容が次のtableViewにプッシュされます。タッチバックすると、前のtableView、つまりドキュメントディレクトリ内の4つのファイルが再び一覧表示されます。すべてが完璧に機能します。
問題は、抽出されたファイル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];
ご回答ありがとうございます。