1

我有一个允许用户保存和打开文本文件的应用程序。保存和打开文件相当简单明了,但我必须为用户提供一种简单的方法来选择要打开的文件。我决定用UITableView来做这件事。

当 TableView 在我的视图控制器中加载时,我的目标是使用 Documents 文件夹(iOS 应用沙箱的一部分)中的所有用户文本文件的名称填充 TableView。

我对如何做到这一点有一个大致的了解:

  1. 获取 Documents 文件夹的内容并将其放入数组中

    NSString *pathString = [[NSBundle mainBundle] pathForResource:@"Documents" ofType:@"txt"];
    NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:pathString error:nil];
    NSLog(@"Contents of directory: %@", fileList);
    

    但这总是返回:(null)在输出窗口中。我的应用程序文档文件夹的路径是什么?

  2. 将数组放在 UITableView 中

    我想我会用这个numberOfRowsInSection方法来做到这一点。这是执行此类操作的正确位置吗?我应该使用不同的方法吗?

  3. 最后,应用程序将获取所选单元格的值并使用该值打开文件。


我的主要问题是:如何将项目(尤其是目录的内容)放入 NSArray,然后在 UITableView 中显示该数组?

任何帮助深表感谢!

4

1 回答 1

3

您可以使用以下方式获取路径:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

您可以使用以下命令获取目录的内容:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:nil];

至于在 UITableView 中显示 NSArray,您应该查看 Apple 关于 UITableView 数据源协议的文档:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableViewDataSource_Protocol/Reference/Reference.html

您使用 cellForRowAtIndexPath 方法来实际填充表格,这样的事情会起作用:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"MyIdentifier"];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MyIdentifier"] autorelease];
    }

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell.textLabel.text = [fileList objectAtIndex:indexPath.row]

    return cell;
}
于 2012-04-23T22:17:56.940 回答