iPhone - 使用子文件夹

时间:2010-11-19 11:42:36

标签: iphone uitableview detailsview

我有一个tableView,它列出了包含jpg,pdf,zip,mp3,mp4,sql,..文件甚至文件夹的内容目录。在下一步中,我有一个detailView,它显示所选文件的一些属性,如fileName,fileSize,filePath,fileType。一切都很完美。

但实际上我在detailView中添加了一个附加选项。

即,

  1. 如果tableView中的选定文件是图像文件,它会在detailView中打开imageView以显示该图像。
  2. 如果所选文件是mp3,则会打开播放器以在detailView中播放歌曲。
  3. 如果所选文件是视频或mp4文件,则会打开播放器以详细播放该视频。
  4. 对于其他文件,它会推送一个alertView,告知它是一个未知文件。
  5. (我被困在这里..)5。如果所选项目是一个文件夹,它应该再次打开一个tableView,显示该文件夹的内容。

    也就是说,它应该打开tableView中的子文件和子文件夹,这应该是一个递归函数。请帮我这样做..

    我认为我的屏幕截图可能会提供一些想法。

    这是我的tableView列出了我的目录的内容..

    alt text

    其中“SQLTutorial”是上面列表中的文件夹

    这是图像文件的详细信息视图

    alt text

    这是视频文件的详细视图

    alt text

    这是音频文件的详细视图

    alt text

    请帮我完成一些示例代码的过程,以查看tableView中的文件夹和子文件夹。提前谢谢。

3 个答案:

答案 0 :(得分:1)

最好的方法是将文件夹名称显示为初始列表(您的第一个图像)的一部分,然后在选中时,您将创建一个包含文件夹内容的新列表,并将其推送到导航控制器。

你可能需要重构你的表视图以获得包含你的“路径”的ivar,并添加一个导航控制器(如果你还没有)。

答案 1 :(得分:0)

如果文件和文件夹是在视图控制器的viewDidLoad中加载的,那么最简单的方法是向视图控制器添加属性以指示源文件夹。因此,当用户触摸子文件夹单元格时,您可以初始化新的视图控制器,将该属性设置为该子文件夹并将其推送到导航控制器。

答案 2 :(得分:0)

除了Paul回答,您可以添加'文件夹'ivar并在选择行时定义它:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  FolderViewController * detailViewController = [[FolderViewController alloc] initWithNibName:@"yourTableView" bundle:nil];

  UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];
  // Set the title of the navigation item for the table view
  detailViewController.folder = cell.textLabel.text;
  detailViewController.navigationItem.title = cell.textLabel.text; 

  // Pass the selected object to the new view controller.
  [controller.navigationController pushViewController:detailViewController animated:YES];
  [detailViewController release];
}