J'ai créé un UITableView par programmation (sans utiliser de XIB). Il lit un fichier * .plist contenant un NSMutableArray d'objets NSDictionary. Le problème que je rencontre est le suivant: Lorsque j'affiche les objets dans UITableView, il ne montre jamais l'objet à la ligne zéro. Je sais que cela parce que je reçois la sortie NSLog suivante:Toujours une ligne manquante dans UITableView
2009-06-01 10:02:34.566 Color[784:20b] array count = 4
2009-06-01 10:02:34.570 Color[784:20b] row = 3: Air
2009-06-01 10:02:34.570 Color[784:20b] row = 2: Earth
2009-06-01 10:02:34.571 Color[784:20b] row = 1: Water
2009-06-01 10:02:34.571 Color[784:20b] row = 0: Fire
Ce que je vais voir, dans ce cas, est une table avec l'eau, la terre et l'air (mais pas de feu). Si j'ajoute un autre objet, Fire apparaîtra mais le nouvel objet ne le sera pas. Par conséquent, il est toujours l'objet à la ligne 0.
Voici un code pertinent:
@interface LoadViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource> {
NSMutableArray *loadedObjects;
}
- (void)viewWillAppear:(BOOL)animated {
self.loadedObjects = [self getCurrentData];
NSLog(@"array count = %d", [self.loadedObjects count]);
[self.tableView reloadData];
[super viewWillAppear:animated];
}
-(NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:(NSInteger)section {
return [self.loadedColors count];
}
-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
static NSString *Identifier = @"Identifier";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:Identifier];
if(cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:Identifier] autorelease];
cell.showsReorderControl = YES;
}
NSUInteger row = [indexPath row];
NSDictionary *obj = [self.loadedObjects objectAtIndex:row];
cell.text = [obj objectForKey:@"Name"];
NSLog(@"row = %d: %@", row, [obj objectForKey:@"Name"]);
return cell;
}
Dans les extraits de code, vous pouvez également voir ma sortie NSLog.
Lorsque j'avais peuplé UITableViews à partir d'un NIB, je n'avais jamais rencontré ce problème. Toutes les suggestions sont appréciées.
Merci à l'avance.
Devrions-nous supposer que les séparés loadedObjects et loadedColors sont une faute de frappe ici? –
Excepté cette faute de frappe, cela semble bon code. Je commencerais par désactiver l'affectation cell.text pour quelque chose de statique, ou quelque chose comme "Cell% d". De cette façon, vous pouvez isoler la partie UITableView des objets loadedObjects et voir quel est le problème. –
Peut-être ajouter un point d'arrêt sur cellForRowAtIndexPath et vérifier que votre propriété 'loadedObjects' contient toujours ce que vous attendez qu'il contienne? – Hunter