1

我试图在 TableView 中列出 Ringtones 目录的内容,但是,我只获取所有单元格中目录中的最后一个文件,而不是每个单元格中的文件。这是我的代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    Profile_ManagerAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
        cell.hidesAccessoryWhenEditing = YES;
    }

    cell.accessoryType = UITableViewCellAccessoryNone;
    //cell.textLabel.text = @"No Ringtones";
    //cell.textLabel.text = @"Test";

    NSString *theFiles;
    NSFileManager *manager = [NSFileManager defaultManager];
    NSArray *fileList = [manager directoryContentsAtPath:@"/Test"];
    for (NSString *s in fileList){
        theFiles = s;
    }
    cell.textLabel.text = theFiles;

    return cell;
}

它加载正常,没有错误,当我使用NSLog它时,它列出了目录中的所有文件就好了。我什至尝试过[s objectAtIndex:indexPath.row],但我得到了objectAtIndex:错误。有人有想法么?

4

3 回答 3

1

你应该删除 NSString,NSMutableArray 和 for loop.. 最终的代码应该是这样的:

NSFileManager *manager = [NSFileManager defaultManager];
NSArray *fileList = [manager directoryContentsAtPath:@"/Test"];
cell.textLabel.text = [fileList objectAtIndex:indexPath.row];
return cell;

顺便说一句,这个文件列表和管理器为每个单元格重复创建..所以最好将它设为 UITableViewController 的全局变量并仅分配 1

于 2011-10-09T08:39:21.977 回答
1

我真的很喜欢在这里提问,因为在不到 10 分钟的时间里,我回答了我自己的问题!

这就是我让上面的代码工作的方式:

NSMutableArray *theFiles;
NSFileManager *manager = [NSFileManager defaultManager];
NSArray *fileList = [manager directoryContentsAtPath:@"/Test"];
for (NSString *s in fileList){
    theFiles = fileList;
}
cell.textLabel.text = [theFiles objectAtIndex:indexPath.row];
return cell;

我刚刚将 NSString 设为 NSMutableArray,这样我就可以使用 objectAtIndex。现在修剪文件扩展名!

于 2009-11-16T06:01:21.180 回答
0

您的 for 循环只是遍历文件并将 theFiles 设置为当前路径。所以在循环结束时,theFiles 将只是集合中的最后一个字符串。

尝试类似:

cell.textLabel.text = [fileList objectAtIndex:indexPath.row];
于 2009-11-16T06:00:24.073 回答