2016-04-26 6 views
0

Ich möchte TableViewCell mit Bild erstellen. Bildwerte von meinem Plist. Welche Methode benötigt? Wie geht es? Es ist Code, mit dem i tableviewcellBild in TableviewCell

NSArray *brend =[brends objectAtIndex:indexPath.row]; 
    NSString *logo = [[brend objectAtIndex:indexPath.row]valueForKey:@"Image"]; 

    cell.imageView.image=[UIImage imageNamed:logo]; 

Mein plist in Bild hinzufügen möchten:

<dict> 
    <key>Mercedec</key> 
    <dict> 
     <key>Image</key> 
     <string>Mercedes.png</string> 
    </dict> 
    <key>Rena</key> 
    <dict> 
     <key>Image</key> 
     <string>Renault.png</string> 
    </dict> 

Aber es abgestürzt

Seit kurzem Objective-C zu lernen. Kann mir hier jemand helfen?

EDIT:

@interface MainTableViewController() 
@property (nonatomic, copy) NSDictionary *companylist; 
@property (nonatomic, copy) NSArray *brends; 

@end 

@implementation MainTableViewController 

@synthesize brends,companylist; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 


    UITableView *tableView = (id)[self.view viewWithTag:1]; 

    [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"Cell"]; 

    NSString *Stplist= [[NSBundle mainBundle] pathForResource:@"wunder" ofType:@"plist"]; 


    companylist = [[NSDictionary alloc]initWithContentsOfFile:Stplist]; 
    self.brends = [[self.companylist allKeys] sortedArrayUsingSelector:@selector(compare:)]; 

} 

#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 

    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    return brends.count; 
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 


    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 

    cell.textLabel.text=brends[indexPath.row]; 


    NSArray *imagesArray= [companylist allValues ]; 


    NSString *logo= [[imagesArray objectAtIndex:indexPath.row]valueForKey:@"Image"]; 

    cell.imageView.image=[UIImage imageNamed:logo]; 


    return cell; 

} 
+0

kann das Crash-Protokoll veröffentlichen? und was ist brends? ist es ein Array oder ein Wörterbuch, das auf Ihrem plist basiert, sollte es ein Wörterbuch sein – Joshua

+0

Ich denke, dass brend "Marke" - wie in der Marke des Autos ist. – headbanger

+0

Sie erhalten dieses Bild von Json? Möchten Sie es wirklich in Plist speichern? – Arun

Antwort

1

Verwendung dieser Code

NSDictionary * picturesDictionary = [NSDictionary dictionaryWithContentsOfFile: [[NSBundle main] pathForResource: @ "my" ofType: @ "plist"]];

NSArray *imagesArray= [picturesDictionary allValues]; 

in der Tabellenansicht Methoden verwenden, um diese

NSString *yourPicName= [[imagesArray objectAtIndex:index.row]valueForKey:@"Image"]; 
+0

Es funktioniert, aber nicht in der Reihenfolge –

+0

NSDictionary ist eine ungeordnete Sammlung. Zu sagen "die Reihenfolge, in der ich sie hinzugefügt habe" hat keine Bedeutung. Wenn Sie auf die Schlüssel in einer bestimmten Reihenfolge zugreifen möchten, müssen Sie entweder ein Array neben Ihrem Wörterbuch speichern oder die Schlüssel abrufen und sie dann sortieren, um auf die Werte in dieser Reihenfolge zuzugreifen. –

+0

Zum Beispiel? Nur die Bilder platziert richtig –

0

Sie können Ihre eigene Zelle hinzufügen (New File -> Cocoa-Klasse mit xib der Unterklasse UITableViewCell ist). Dort können Sie hinzufügen, was Sie wollen und wo Sie wollen (Bildansicht, mehr Etiketten)

+0

Ich brauche keine separate Zelle. Das Problem ist, dass ich keine Bilddaten vom Plist nehmen kann –