Вывести список содержимого каталога в UITableView - PullRequest
1 голос
/ 16 ноября 2009

Я пытаюсь перечислить содержимое каталога Ringtones в TableView, однако я получаю только последний файл в каталоге во ВСЕХ ячейках, а не файл на ячейку. Это мой код:

- (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: ошибка. У кого-нибудь есть идеи?

Ответы [ 3 ]

1 голос
/ 16 ноября 2009

Я действительно люблю задавать вопросы здесь, потому что менее чем за 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. Теперь, чтобы обрезать расширение файла!

1 голос
/ 09 октября 2011

Вы должны удалить NSString, NSMutableArray и цикл for .. итоговый код должен быть таким:

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

Кстати, этот список файлов и менеджер создаются неоднократно для каждой ячейки. Поэтому лучше сделать ее глобальной переменной для UITableViewController и назначить только 1

0 голосов
/ 16 ноября 2009

Ваш цикл for просто перебирает файлы и устанавливает для файлов текущий путь. Таким образом, в конце цикла theFiles будет последней строкой в ​​коллекции.

Попробуйте что-то вроде:

cell.textLabel.text = [fileList objectAtIndex:indexPath.row];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...