2010-09-30 5 views
0

J'ai des problèmes pour configurer mon cellForRowAtIndexPath avec des sections. Si je devais juste montrer toutes les "pistes" sans séparations de sections par "sujets" alors cela fonctionne bien.UITableView avec des sections et des données analysées comment créer cellForRowAtIndexPath

Track *aTrack = [appDelegate.tracks objectAtIndex:row]; 
cell.textLabel.text = aTrack.track_title; 

Je l'ai déjà mis en place mon numberOfSectionsInTableView, numberOfRowsInSection, titleForHeaderInSection. Tout cela fonctionne bien. Mais je ne sais pas vraiment comment configurer cellForRowAtIndexPath.

Après avoir étudié un peu plus la meilleure façon semble utiliser un NSDictionary pour afficher mes cellules ...

NSDictionary *dictionary = [sectionTopicArray objectAtIndex:indexPath.section]; 
NSArray *array = [dictionary objectForKey:@"Tracks"]; 
NSString *cellValue = [array objectAtIndex:indexPath.row]; 
cell.textLabel.text = cellValue; 

Quelqu'un peut-il me donner quelques conseils sur la façon de faire un MutableArray (sectionTopicArray) qui est va tenir tous mes dictionnaires? Je peux voir ce qui suit dans ma tête, mais je ne sais pas comment le dire dans le code.

sectionTopicArray 
[0] Dictionary 1 with key Tracks 
    Track1 
    Track2 
    Track3 
[1] Dictionary 2 with key Tracks 
    Track4 
[2] Dictionary 3 with key Tracks 
    Track5 
    Track6 

basically I'm thinking... 
Section0 = Dictionary1 = Topic1 
Section1 = Dictionary2 = Topic2 
Section2 = Dictionary3 = Topic3 
+0

Où les données de piste vivent-elles? S'agit-il d'une base de données SQLite sur le périphérique, réside-t-elle en mémoire ou est-elle récupérée au besoin sur le réseau? –

+0

@John son XML analysé. Merci! – slowman21

Répondre

0

J'utiliserais des tableaux imbriqués.

Créer le DataArray:

NSArray *dataArray = [NSArray arrayWithObjects: 
         [NSArray arrayWithObjects: // Section 0 
         track1,      // Item 0 
         track2,      // Item 1 
         track3,      // Item 2 (indexpath 0.2) 
         nil], 
         [NSArray arrayWithObjects: // Section 1 
         track4,      // Item 0 (indexpath 1.0) 
         nil], 
         [NSArray arrayWithObjects: // Section 2 
         track5,      // Item 0 
         track6,      // Item 1 (indexpath 2.1) 
         nil], 
         nil]; 

Object Access à cellForRowAtIndexPath:

Track *trackAtIndexPath = [[dataArray objectAtIndex:indexpath.section] objectAtIndex:indexpath.row]; 

Vous pouvez créer des titres de section en quelque sorte comme ceci:

NSArray *sectionTitles = [NSArray arrayWithObjects: 
          @"Section 0", 
          @"Section 1", 
          @"Section 2", 
          nil]; 

devrait être clair comment y accéder .

+0

Merci pour la réponse. Hmm ... bien sûr, j'ai aussi pensé à ça. Mais comment ferais-tu cela en boucle. Puisque mes données ne sont pas statiques et peuvent changer si le XML est changé ou mis à jour. – slowman21

+0

vous utilisez juste NSMutableArray au lieu de ces NSArrays, bouclez vos données et ajoutez-le au bon endroit. Vous pouvez utiliser '[[dataArray objectAtIndex: section] addObject: track]' ou quelque chose comme ça pour ajouter les pistes à vos sections. Et si vous devez ajouter des données à une section qui ne se trouve pas déjà dans votre dataArray, ajoutez simplement la section-tableau correspondante '[dataArray addObject: [tableau NSMutableArray]]; –

Questions connexes