我有一个tableView,它列出了我的文档目录的内容。我有一些zip文件。如果我触摸tableView中的文件,相应的zip文件将解压缩并提取到临时目录(在我的情况下为newFilePath
)。解压缩的内容列在下一个tableView中。当我触摸后退按钮时,将再次列出目录中的内容。
例如,请考虑我的文档目录中有四个zip文件。
songs.zip,videos.zip,files.zip,calculation.zip
当我运行应用程序时,tableView中列出了所有四个文件。当我触摸songs.zip时,此文件将在newFilePath
中提取,其内容将被推送到下一个tableView。当我回击时,再次列出前面的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];
感谢您的回答。
答案 0 :(得分:1)
要创建自己的操作,您需要自定义后退按钮。但我认为viewWillDisAppear也可以解决您的问题。
使用此代码解决您的问题
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectoryPath = [paths objectAtIndex:0];
NSString *databaseFile = [documentsDirectoryPath stringByAppendingPathComponent:@"newFilePath"];
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager removeItemAtPath:databaseFile error:NULL];
这可能会对你有帮助。
修改强>
NSString *documentsDirectoryPath = [paths objectAtIndex:0];
NSString *secondaryDirectoryPath = [secondaryDirectoryPath stringByAppendingPathComponent:@"secondary"];
NSString *databaseFile = [documentsDirectoryPath stringByAppendingPathComponent:@"newFilePath"];
如果文档目录中有目录,请在代码中使用这些行。
答案 1 :(得分:0)
您可以在导航栏上添加自定义后退按钮。创建方法,该方法将在“后退”按钮的单击事件中触发。