UINavigationController 使用表格视图向下钻取

Posted

技术标签:

【中文标题】UINavigationController 使用表格视图向下钻取【英文标题】:UINavigationController Drill Down with Table View 【发布时间】:2010-12-20 14:32:02 【问题描述】:

我有一个UITableView,它列出了我的文档目录的内容。我有一些 zip 文件。如果我触摸UITableView 中的一个文件,相应的zip 文件将被解压缩并提取到一个临时目录(NSTemporaryDirectory())中。

问题是如何导航我在 tableView 中提取的内容。如果假设,提取的 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。

您需要第二个 UITableViewController 子类来处理显示 zip 中包含的文件。它可能有一个 NSString 属性,它是 zip 文件夹的完整路径。它使用该目录中的文件列表作为数据源。

在启动时将原始tableView(控制器)添加到UINavigationController的rootView。当您点击列出 zip 文件的 tableView 时,您会将第二个 UITableViewController 推送到 UINavigationController 上,并引用提取的文件(新文件夹?)。

[UINavigationwController pushViewController:nextTableView animated:YES];

请参阅此legacy code example from Apple,了解如何深入了解UINavigationController。另外,请查看来自 Apple 的 the docs on UINavigationController。

【讨论】:

以上是关于UINavigationController 使用表格视图向下钻取的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationcontroller 中未使用的视图会发生啥?

使用 push segue 时 UINavigationController 是不是强制

UINavigationController - 使用 UIBlurEffect 清除背景

一起使用 UITabBarController 和 UINavigationController

iPhone - UINavigationController - 使用 CATransaction 自定义动画

如何在 SwiftUI 中使用 UINavigationController