2010-04-29 7 views
0

Im ayant un problème avec la définition de mes en-têtes de section dans un uitableview, c'est probablement quelque chose de très simple que je ne peux pas travailler.problème avec les en-têtes de section dans UITableView

au lieu d'afficher différents en-têtes des sections différentes, il affiche le même en-tête pour chaque section

Aidez-moi s'il vous plaît :)

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    WorldCupAppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 

    return [appDelegate.matchFixtures count]; 
} 

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { 


    WorldCupAppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 
    Fixtures *fixtures = [appDelegate.matchFixtures objectAtIndex:section]; 

    return fixtures.matchDate; 

} 
+0

Avez-vous vérifié que le compteur appDelegate.matchFixtures a une valeur quelconque en imprimant via NSLog ?. Pareil pour fixtures.matchDate? –

+0

Est-ce que chaque matchFixture a un matchDate différent? – DyingCactus

Répondre

1

Essayez comme ça

- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:  (NSInteger)section { 
NSString *title = nil; 
// Return a title or nil as appropriate for the section. 
switch (section) { 
    case 0: 
     title = [[appDelegate.matchFixtures objectAtIndex:section]matchDate]; 
     break; 
    case 1: 
     title = [[appDelegate.matchFixtures objectAtIndex:section]matchDate]; 
     break; 
    case 2: 
     title = [[appDelegate.matchFixtures objectAtIndex:section]matchDate]; 
     break; 
    default: 
     break; 
} 
return title; 
} 

Modifier

Définissez correctement la date avec retain dans la classe déléguée.Même J'ai eu quelques problèmes similaires lors du stockage des valeurs dans les délégués.

- (void)setCurrentDates:(NSString *)value { 
[value retain]; // <- Retain new value 
[date release]; // <- Release old value; 
date = value; 
} 

Tout le meilleur.

+0

qui ressemble à peu près, mais il bloque mon application avec 2010-04-29 14: 25: 51.729 WorldCup [4912: 207] *** - [longueur des montages]: sélecteur non reconnu envoyé à l'instance 0x3b0fe30 2010-04 -29 14: 25: 51.730 WorldCup [4912: 207] *** App terminant en raison d'une exception non interceptée 'NSInvalidArgumentException', raison: '*** - [Longueur des projecteurs]: sélecteur non reconnu envoyé à l'instance 0x3b0fe30' 2010-04- 29 14: 25: 51.731 WorldCup [4912: 207] Pile: ( –

+0

imprimer et cocher une valeur de date quelconque obtenue par le délégué – Warrior

+0

Basé sur le code dans votre question, le code dans cette réponse devrait lire le cas 0: title = [[appDelegate.matchFixtures objectAtIndex: section] matchDate]; –

3

Votre code d'origine semble correct. Je parie que appDelegate.matchFixtures ne contient pas les données que vous pensez faire. Modifiez votre code pour ressembler à ceci:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    WorldCupAppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 

    NSLog(@"appDelegate.matchFixtures.count = %i", appDelegate.matchFixtures.count); 

    return [appDelegate.matchFixtures count]; 
} 

- (NSString *)tableView:(UITableView *)tableView 
titleForHeaderInSection:(NSInteger)section { 

    WorldCupAppDelegate *appDelegate = [UIApplication sharedApplication].delegate; 
    Fixtures *fixtures = [appDelegate.matchFixtures objectAtIndex:section]; 

    NSLog(@"For section %i, fixtures.matchDate = %@", section, fixtures.matchDate); 

    return fixtures.matchDate; 
} 

Et regardez la sortie du journal dans la console de débogage.

Questions connexes