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