2012-08-14 5 views
-2

J'ai un contrôleur de vue divisé pour iPad avec une table de forage sur la gauche. Je suis capable de remplir ma première vue de table et quand je clique sur une cellule ceci m'amène à ma deuxième vue de table. Je suis en mesure de voir le nombre d'enregistrements retournés et les données réelles que je m'attends à voir dans le tableau de sortie dans la commande veuve avec la commande NSLog. Ce que je ne vois pas, ce sont les données réelles dans la vue tabulaire. Au lieu de cela, je vois UITableViewCellAccessoryDisclosureIndicator pour chaque ligne qui est retournée mais pas de données réelles. J'utilise des fichiers xib et j'ai créé ce fichier pour mes produits que je veux afficher dans le zoom avant. Dans mon fichier Product.xib, j'ai les sorties propriétaires du fichier en tant que produitsTableView liés aux produits (mon contrôle UITableView) et vue liée à View. Referencing Outlets pour la vue ont dataSource lié aux produits, délégué lié aux produits et enfin vue liée au propriétaire du fichier.Affichage des données dans UITableView

Ai-je raté quelque chose ici? Comme je l'ai dit, je récupère toutes les données, cela ne lie pas la grille.

@interface ProductViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> { 

NSMutableArray *listOfItems; 
NSMutableArray *dataArray; 
IBOutlet UITableView *productsTableView; 
} 

@property(nonatomic, strong) IBOutlet UITableView *productsTableView; 

@end 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
static NSString *CellIdentifier = @"Cell"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

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

// Set up the cell... 
NSString *cellValue = [listOfItems objectAtIndex:indexPath.row]; 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
cell.textLabel.text = cellValue; 

return cell; 
} 

Dans l'intérêt d'être complet, je signalerai ceci aussi bien pour montrer où je reviens mes données et comment je fais cela ...

-(void) connectionDidFinishLoading:(NSURLConnection *)connection { 

NSError *error = nil; 
// Get the JSON data from the website 
id result = [NSJSONSerialization JSONObjectWithData:receivedData options:kNilOptions error:&error]; 

if ([result isKindOfClass:[NSArray class]]) { 

    for (NSArray *item in result) { 
     NSArray *products = [item valueForKey:@"ProductDescription"]; 
     [dataArray addObject:products]; 
     [listOfItems addObject:products]; 
    } 
} 
else { 
    NSDictionary *jsonDictionary = (NSDictionary *)result; 

    for(NSDictionary *item in jsonDictionary) 
     NSLog(@"Item: %@", item); 
} 

[self performSelector:(@selector(refreshDisplay:)) withObject:(self.productsTableView) afterDelay:1.0]; 
NSLog(@"Finished"); 
} 

Mon NSLog est ici:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
NSLog(@"Dictionary: %@", dataArray); 
return [dataArray count]; 
} 
+1

Vous devez publier un peu plus de code, en particulier la méthode tableView: cellForRowAtIndexPath: pour la deuxième table. – rdelmar

+0

Voici mon cellForRowAtIndexPath mais je ne pense pas que ce soit le problème. Comme je l'ai dit, je vois toutes les données retournées sans problème. Je pense que j'ai manqué quelque chose avec la connexion de Products.xib avec le dataArray qui est retourné dans une autre fonction. – brianhevans

+0

Mais vous avez dit que vous avez vu les données attendues dans une instruction de journal qui ne figure pas dans votre tableau, c'est pourquoi j'ai pensé que le problème pourrait être dans cette méthode. Avez-vous enregistré cela à partir de cette méthode? Si ce n'est pas le cas, essayez de journaliser cellValue pour vous assurer que les données arrivent à ce point dans le programme. – rdelmar

Répondre

0

simple mixup ...

NSString *cellValue = [dataArray objectAtIndex:indexPath.row]; 

au lieu de

NSString *cellValue = [listOfItems objectAtIndex:indexPath.row]; 
0

Vous ajoutez products (qui est un NSArray) à listOfItems. Plus tard dans cellForRowAtIndexPath, vous dites cellValue (NSString) = [listOfItems objectAtIndex:indexPath.row] (qui est potentiellement un «NSArray»). Comment cela fonctionnerait-il?

+0

Je ne comprends pas pourquoi j'ai perdu 4 points de réputation pour cet article ... – brianhevans

+0

Désolé mec, ce n'était pas moi! – Ravi

Questions connexes