代码之家  ›  专栏  ›  技术社区  ›  iOS

iPhone-详细视图控制器

  •  0
  • iOS  · 技术社区  · 13 年前

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

    但实际上,我的计划是在detailView中包含一个附加选项。

    也就是说,

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

    希望我的概念叙述得很好。我有播放.mp3和.mp4文件的方法。现在我被困在推imageView和文件夹的情况下。两种方法我都不知道该怎么做。

    这是我的桌面视图 alt text

    这是我的视频文件详细视图 alt text

    这是.mp3文件的详细视图 alt text

    这是我的imageView的detailView为空。 alt text

    请帮我处理一些示例代码。提前谢谢你。

    3 回复  |  直到 13 年前
        1
  •  1
  •   DJ Bouche    13 年前

    根据您的截图和实现其他文件类型的进度,我假设您能够将文件路径的信息传递到详细视图。所以,对于图像文件,我将讨论如何将其显示为 UIImageView .

    对于图像视图,您需要创建 UIImage 在小路上。

    下面的代码示例:假设 pathString 是一个 NSString* 有了图像路径 imageView 现在是 UIImageView视图 它应该显示图像。此代码将驻留在 -viewDidLoad 方法 detailViewController 处理图像显示。

    UIImage* theImage = [[UIImage alloc] initWithContentOfFile:pathString];
    imageView.image = theImage;
    [theImage release];
    

    至于文件夹视图,这有点不同。为了获得最佳结果,您需要递归地加载 tableViewController 现在使用显示文件列表(以便它递归地继承所有文件/文件夹处理)。

    我建议添加一个实例变量,如 folderPath 表视图控制器 你在推视图之前设置的。以及 表视图控制器 应该用这个作为基本路径。

    下面的代码示例:假设 路径字符串 是一个 NSString公司* 带着目的地的路径 详细视图控制器 现在是新的 表视图控制器 被打开。此代码将驻留在将创建新的 详细视图控制器 在某处展示 tableView:didSelectRowAtIndexPath:

    detailViewController.folderPath = pathString;
    [self.navigationController pushViewController:detailViewController animated:YES];
    

    然后应该在 -视图加载 方法 表视图控制器 ,应该从中读取哪些文件夹内容 文件夹路径 实例变量。

        2
  •  0
  •   marko    13 年前

    这种方法 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath; 当某个单元格上发生触摸时调用。

    你可以用手机 [yourTableView cellForRowAtIndexPath:cellIndex];

    之后,您可以看到type属性,并打开相应的viewcontroller。 [self.navigationController pushViewController:detailViewController animated:YES];

        3
  •  0
  •   Community Egal    7 年前

    创建detailView时,应使用其他参数重载init,这些参数指示要显示的媒体类型和此资源的url/文件。

    如果是为了图像, look at this post