2011-11-10 3 views
0

Je suis en train d'afficher les données d'un plist qui est un tableau de dictionnaires:charger les données dans detailviewcontroller de plist?

<array> 
    <dict> 
     <key>title</key> 
     <string>RATATOUILLE</string> 
     <key>coverImage</key> 
     <string>rat.png</string> 
     <key>smallImage</key> 
     <string>rat-small.png</string> 
     <key>description</key> 
     <string>Spray a pan with cooking spray. Brown the onion and the garlic (do not let garlic burn!). Add all the veggies and the bay leaf and simmer covered for 2 hours. Sprinkle on the breadcrumbs and cook another 5 minutes. Remove the bay leaf and serve. 
5 servings, 0 POINTS each (if you eat the whole thing, count points for the bread crumbs)</string> 
    </dict> 

dans le RootViewController les affichages de données très bien dans les cellules. Dans le detailviewcontroller j'ai essayé la même méthode et elle n'affiche rien. Qu'est-ce que je fais mal? Voici le code:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    NSDictionary *details = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Testdata" ofType:@"plist"]]; 

    coverImageView.image = [UIImage imageNamed:[details objectForKey:@"coverImage"]]; 
    titleLabel.text = [details objectForKey:@"title"]; 
} 

ce que je ne comprends pas comment cela fonctionne réellement. Dans le RootViewController j'ai cette méthode:

-(id)initWithCoder:(NSCoder *)aDecoder { 

    if (self = [super initWithCoder:aDecoder]) { 
     NSString *path = [[NSBundle mainBundle] pathForResource:@"TestData" ofType:@"plist"]; 
     arrayIndex = [[NSArray alloc] initWithContentsOfFile:path]; 

    } 
    return self; 
} 

et les données sont tirées de la « arrayIndex ». N'est-ce pas la même chose pour le detailviewcontroller? ................... Edit: j'ai tout compris, fait une chaîne dans la tableviewcontroller:

NSString *selectedItem = [arrayIndex objectAtIndex:indexPath.row]; 
detailViewController.selectedItem = selectedItem; 

et les données chargées dans le detailviewcontroller comme cela:

coverImageView.image = [UIImage imageNamed:[selectedItem valueForKey:@"coverImage"]]; 
    titleLabel.text = [selectedItem valueForKey:@"title"]; 
+0

S'il vous plaît dites ce que vous obtenez dans le "détails" dictionnaire ...... – objectivecdeveloper

Répondre

0

Je pense que vous manquez la partie tableau, vous devez charger un tableau à partir du plist et ensuite obtenir le dictionnaire à l'index approprié. Incidemment, vous avez apparemment déjà chargé les données en mémoire dans le rootviewcontroller, vous pouvez donc simplement le passer en tant que propriété dans la vue détaillée avec l'index à lire.

Questions connexes