2013-02-26 3 views
0

Je suis confus quant à la façon de jouer une liste de chansons localement. J'essaie de créer une application qui permet à l'utilisateur de sélectionner une chanson à partir d'une liste, puis de continuer à lire cette liste là où elle l'avait laissée. À moins qu'ils ne choisissent une chanson différente, alors elle joue de cette chanson en avant.iOS Lire la liste de la musique localement

J'ai lu et essayé plusieurs didacticiels sur la façon de lire des fichiers audio en utilisant AVFoundation, mais ils semblent seulement me permettre de jouer un seul son. J'ai essayé MPMusicPlayer, mais cela ne fonctionnera pas parce que je veux seulement lire les fichiers qui viennent avec l'application, pas de la bibliothèque musicale de l'utilisateur.

Voici ce que j'ai tellement loin de ce tutoriel:

iPhone Music Player

je me sens coincé et confus quant à la façon de jouer les chansons sur place dans la liste. Comment puis-je construire cela?

Répondre

1

Vous devriez probablement envisager d'utiliser un UITableView avant d'essayer une application qui l'exige.

Je l'ai écrit de mémoire afin s'il vous plaît tester et confirmer tout cela fonctionne ...

Assurez-vous que votre contrôleur de vue implémente les méthodes de la vue de la table des délégués, et déclarer une UITableView obj et tableau comme tel:

@interface YourTableViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> 
{ 
    IBOutlet UITableView *theTableView; 
    NSMutableArray *theArray; 
} 

Assurez-vous de les lier dans votre storyboard. Vous devriez voir theTableView comme défini ci-dessus.

Lorsque vous charge d'application, écrivez ce (quelque part comme viewDidLoad serait bien):

theArray = [[NSMutableArray alloc] initWithObjects:@"Item 1", @"Item 2", @"Item 3", nil]; 

Vous n'avez pas besoin de déclarer combien de sections il y a dans votre vue de la table, donc pour ne pas tenir compte maintenant que plus tard . Vous devez cependant déclarer combien de lignes il y a:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [theArray count]; // Return a row for each item in the array 
} 

Maintenant, nous devons attirer l'UITableViewCell. Pour simplifier, nous utiliserons celui par défaut, mais vous pouvez facilement créer le vôtre.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    // This ref is used to reuse the cell. 
    NSString *cellIdentifier = @"ACellIdentifier"; 

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if(cell == nil) 
    { 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
    } 

    // Set the cell text to the array object text 
    cell.textLabel.text = [theArray objectAtIndex:indexPath.row]; 

    return cell; 
} 

Une fois que vous avez la table affichant les noms des pistes, vous pouvez utiliser la méthode:

(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if(indexPath.row == 0) 
    { 
    NSString *arrayItemString = [theArray objectAtIndex:indexPath.row]; 
    // Code to play music goes here... 
    } 
} 

Dans le NSMutableArray nous déclarions en haut, vous ne devez pas ajouter NSString « s au tableau. Vous pouvez créer votre propre objet si vous voulez stocker plusieurs chaînes par exemple. N'oubliez pas de modifier où vous appelez l'élément de tableau.

Enfin, pour lire l'audio, essayez d'utiliser la réponse this SO réponse. En outre, bien que ce ne soit pas nécessaire, vous pouvez utiliser une base de données SQLite pour stocker les pistes que vous souhaitez lire dans une liste plutôt que de coder en dur la liste. Puis remplissez le NSMuatableArray après avoir appelé la base de données.

+0

J'ai fait tout ce que vous avez énuméré, mais rien ne s'affiche dans la vue de la table.Dois-je relier quoi que ce soit d'autre dans le storyboard? –

+0

Vous devez lier 'UITableView' à' theTableView' et vous devez configurer les délégués 'UITableView' (' UITableViewDataSource' et 'UITableViewDelegate') dans votre storyboard. –

Questions connexes