Ich erstellte einen PLIST, der eine NSDictionary-Struktur enthält. Der Schlüssel ist ein Label (mit dem ich tableview cell.text auffüllen kann) und der Wert ist ein Dateiname, mit dem ich "cell.image" dynamisch füllen möchte. Die exakten PNG-Dateinamen werden in das Projekt geladen.Verwirrt bei dem Versuch, cell.image mithilfe von UIImage festzulegen: imageNamed:
Um die Dinge einfacher zu machen (so dachte ich), lade ich das PLIST in ein NSDictionary, dann ziehe es auseinander in zwei Arrays (mit allKeys und allValues).
Bei dem Versuch, eine Zelle Bild zu setzen, ich verstehe nicht, warum das funktioniert:
cell.image = [UIImage imageNamed:@"bad.png"];
und dies nicht (in Simulator - ich einen App Absturz bekommen und in Debugger barfing):
cell.image = [UIImage imageNamed:[rowImageList objectAtIndex:indexPath.row]];
kann ich diese nächste Zeile setzen kurz vor dem zweiten Stück Code und es funktioniert gut, so scheint es, dass ich eine NSString aus objectAtIndex bin immer:
NSLog(@"Image name: %@", [rowImageList objectAtIndex:indexPath.row]);
Ich habe auch versucht, einen temporären NSString zu erstellen und ihm [rowImageList objectAtIndex:] zuzuweisen und dann diesen NSString zu verwenden, um imageNamed: zu liefern. Hier
einige Informationen von Debugger:
- [NSCFArray Länge]: Unbekannter Selektor an Instanz gesendet 0x262d910
beenden app aufgrund nicht abgefangene Ausnahme 'NSInvalidArgumentException', Grund: ‚* ** - [NSCFArray Länge]: Unbekannte Wähler auf Instanz 0x262d910' gesendet
Lassen Sie mich k jetzt, wenn Sie mehr Info/Code benötigen.
Edit: Hier ist, wie ich bevölkern rowImageList:
NSArray *myRowImages = [[NSArray alloc] init];
myRowImages = [searchFilterList allValues];
self.rowImageList = [myRowImages copy];
[myRowImages release];
//where searchFilterList is an NSDictionary that I loaded from a plist
Hier ein Screenshot von meinem plist ist: [IMG] http://i42.tinypic.com/14uwffa.jpg http://i42.tinypic.com/14uwffa.jpg [/ IMG]
Edit: überarbeitet rowImageList Bevölkerung:
NSMutableArray *myRowImages = [[NSMutableArray alloc] init];
NSEnumerator *enumerator = [searchFilterList objectEnumerator];
id object;
while ((object = [enumerator nextObject])) {
[myRowImages addObject:[object objectAtIndex:0]];
}
self.rowImageList = myRowImages; //edit: added self. prefix
[myRowImages release];
Hmm ... Ich muss die Dinge noch einmal überprüfen. rowImageList IS ist ein Array, aber ich nahm an, dass ich NSStrings auf das Array (d. h. ein Array von NSString-Objekten) "schob". So füllen Sie rowImageList: \t NSArray * myRowImages = [[NSArray alloc] init]; \t myRowImages = [searchFilterList allValues]; \t self.rowImageList = [Kopie myRowImages]; \t [myRowImages release]; - wo searchFilterList ein NSDictionary ist, das ich von einem Plist geladen habe. – kindaran
Guter Gott, das hat nicht sehr gut formatiert. – kindaran
Wenn Sie folgen, änderte ich schließlich "rowImageList = myRowImages;" zu "self.rowImageList = myRowImages;" War komischer Mist mit dem Versuch, rowImageList später im Code zu verwenden. – kindaran