Question

Je suis en train de lister le contenu du répertoire Sonneries dans un TableView, cependant, je ne reçois le dernier fichier dans le répertoire dans toutes les cellules, au lieu de fichier par cellule. Ceci est mon code:

- (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;
}

Il charge bien, aucune erreur, quand je l'utilise NSLog il répertorie tous les fichiers dans le répertoire très bien. J'ai même essayé [s objectAtIndex:indexPath.row] mais je reçois objectAtIndex: erreur. Quelqu'un at-il des idées?

Était-ce utile?

La solution

Votre boucle est juste itérer sur les fichiers et la mise theFiles au chemin courant. Ainsi, à la fin de la boucle, theFiles sera juste la dernière chaîne dans la collection.

Essayez quelque chose comme:

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

Autres conseils

J'aime vraiment poser des questions ici, la cause en moins de 10 minutes, je réponds à ma propre question!

Voici comment je suis arrivé le code ci-dessus pour travailler:

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;

Je viens de faire la NSString un NSMutableArray, et qui m'a permis d'utiliser le objectAtIndex. Maintenant, pour couper l'extension de fichier!

Vous devez supprimer NSString, NSMutableArray et boucle .. le code final devrait ressembler à ceci:

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

BTW, ce fileList et directeur créé à plusieurs reprises pour chaque cellule .. Il est donc préférable d'en faire une variable globale pour UITableViewController et attribuer seulement 1

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top