Я создал plist, который содержит структуру NSDictionary. Ключ - это метка (которую я использую для заполнения tableview cell.text), а значение - это имя файла, которое я хочу использовать, чтобы «динамически» заполнить cell.image. В проект загружаются точные имена файлов png.Baffled при попытке установить cell.image с использованием UIImage: imageNamed:
Чтобы сделать вещи проще (так я думал), я загружаю plist в NSDictionary, а затем разделяю это на два массива (используя allKeys и allValues).
При попытке установить мобильный образ, я не понимаю, почему это работает:
cell.image = [UIImage imageNamed:@"bad.png"];
и это не дает (в симуляторе - я получаю сбой приложения и ненадежен в отладчик):
cell.image = [UIImage imageNamed:[rowImageList objectAtIndex:indexPath.row]];
я могу поставить эту следующую строку непосредственно перед вторым фрагментом кода, и она работает просто отлично, так что кажется, что я получаю от NSString objectAtIndex:
NSLog(@"Image name: %@", [rowImageList objectAtIndex:indexPath.row]);
Я также попытался создать временную NSString и присвоить ей [rowImageList objectAtIndex:], а затем использовать NSString для поставки imageNamed :.
Вот некоторая информация из отладчика:
- [длина NSCFArray]: непризнанный селектор направлен например 0x262d910
Нагрузочного приложение из-за неперехваченный исключения 'NSInvalidArgumentException', причина: «* ** - [длина NSCFArray]: непризнанные селектор отправляется например 0x262d910'
Позвольте мне K теперь, если вам нужна дополнительная информация/код.
Edit: Вот как я заселить 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
Вот скриншот моего списка свойств: [IMG] http://i42.tinypic.com/14uwffa.jpg http://i42.tinypic.com/14uwffa.jpg [/ IMG]
Edit: пересмотренная rowImageList население:
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];
Хм ... Мне придется перепроверить все. rowImageList - это массив, но я предположил, что я «нажимаю» NSStrings на массив (т. е. массив объектов NSString). Вот как я заполняю rowImageList: \t NSArray * myRowImages = [[NSArray alloc] init]; \t myRowImages = [searchFilterList allValues]; \t self.rowImageList = [myRowImages copy]; \t [myRowImages release]; - где searchFilterList - это NSDictionary, который я загрузил из plist. – kindaran
Хороший лорд, который не очень хорошо форматировался. – kindaran
Если вы следуете, я в конце концов изменил «rowImageList = myRowImages;» до "self.rowImageList = myRowImages;" Имел странную дерьмо, пытаясь использовать rowImageList позже в коде. – kindaran