1

私はUITableViewを持っています。私のドキュメントディレクトリの内容をリストしています。私はその中にいくつかのzipファイルを持っています。 UITableViewのファイルにタッチすると、対応するzipファイルが解凍され、一時ディレクトリ(NSTemporaryDirectory())に展開されます。UINavigationControllerテーブルビューでドリルダウン

問題は、テーブルビューで抽出したコンテンツをナビゲートする方法です。もし、抽出されたzipファイルがフォルダを含んでいるとすれば、それらをtableViewで見ることができるはずです。実際には、フローはドリルダウンのようにすべきです。

私はzipファイルを抽出することができますが、問題は、UITableViewでそれらに移動する必要があります。

これは私のdidSelectRowAtIndexPath:一部です:

NSString *filePath = //filePath; 
if ([[NSFileManager defaultManager]fileExistsAtPath:filePath]) { 
    NSLog(@"File exists at path: %@",filePath);   
} else {    
    NSLog(@"File does not exists at path: %@", filePath);  
}    

NSString *tmpDir =NSTemporaryDirectory();  
ZipArchive *zip = [[ZipArchive alloc] init]; 
BOOL result = NO; 

if ([zip UnzipOpenFile:filePath]) { 
    //zip file is there 
    if ([zip UnzipFileTo:tmpDir overWrite:YES]) { 
     //unzipped successfully 
     NSLog(@"Archive unzip Success"); 
     result= YES; 
    } else { 
     NSLog(@"Failure To Extract Archive, maybe password?"); 
    } 
} else { 
    NSLog(@"Failure To Open Archive"); 
}  

if ([[NSFileManager defaultManager] fileExistsAtPath:tmpDir isDirectory:&isDir] && isDir) { 
    NSLog(@"Its Folder"); 
    //Prepare to tableview.    
    RootViewController *rvController =[[RootViewController alloc]initWithNibName:@"RootViewController"bundle:[NSBundle mainBundle]]; 
    [self.navigationController pushViewController:rvController animated:YES]; 
} 

しかし、これは動作しません。これは、tableView内のドキュメントディレクトリ内の同じ内容をプッシュしています。

答えて

1

ドリルダウンを処理するUINavigationControllerを使用する必要があります。各ドリルダウンは新しいUITableViewControllerです。

zipに含まれるファイルの表示を処理する2番目のUITableViewControllerサブクラスが必要です。それは、zipフォルダへの完全なパスであるNSStringプロパティを持つことができます。そのディレクトリ内のファイルのリストをデータソースとして使用します。

起動時に元のtableView(コントローラ)をUINavigationControllerのrootViewに追加します。 zipファイルをリストするtableViewをタップすると、UINavigationControllerの2番目のUITableViewControllerに、抽出されたファイルへの参照(新しいフォルダ?)が表示されます。

[UINavigationwController pushViewController:nextTableView animated:YES]; 

UINavigationControllerでドリルダウンについては、このlegacy code example from Appleを参照してください。またAppleからthe docs on UINavigationControllerをチェックしてください。

関連する問題