iPhone / iOS Как загрузить много изображений во многие папки и показать в виде таблицы? - PullRequest
3 голосов
/ 04 июля 2011

У меня раздражающий вопрос ...

Что, если у меня много изображений, и я хочу загрузить их в виде таблицы

И отображать имя файла в виде текста ячейки, а изображение предварительного просмотра также отображается в ячейке.

Когда я выбираю ячейку, она переходит к следующему виду, показывает изображение большого размера.

Вот и все.

Я не знаю, как загрузить много папок в массив?

/ *********** РЕДАКТИРОВАТЬ *********** / Это папка, я установил много изображений внутри enter image description here

Вы видите, что это только одна корневая папка ...

А это мой код для загрузки изображения внутри

NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Image"ofType:@""];
NSDirectoryEnumerator *direnum;
direnum = [fileManager enumeratorAtPath: filePath];
imageFolder = [NSMutableArray new];
for(NSString *filename in direnum){
    if([[filename pathExtension] isEqualToString:@"png"]){
        [imageFolder addObject:filename];
    }
}
NSLog(@"Files in the folder %@",imageFolder);

Я получил такой результат:

 Files in the folder (
"macro1.png",
"macro10.png",
"macro11.png",
"macro12.png",
"macro13.png",
"macro14.png",
"macro15.png",
"macro16.png",
"macro17.png",
"macro18.png",
"macro19.png",
"macro2.png",
"macro20.png",
"macro21.png",
"macro22.png",
"macro23.png",
"macro24.png",
"macro25.png",
"macro26.png",
"macro27.png",
"macro4.png",
"macro5.png",
"macro6.png",
"macro7.png",
"macro8.png",
"macro9.png"

)

Но что если я поменяю корневую папку вот так enter image description here

Как читать файлы изображений в подпапках?

Ответы [ 2 ]

4 голосов
/ 04 июля 2011

Приложение не будет иметь проблем с поиском файлов внутри пакета. Структура ваших папок для разработки приложений по большей части не имеет отношения к конечному продукту. Если вы храните изображения в комплекте приложений, система может их найти.

UIImage *image = [[UIImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png"]];

Когда мне пришлось сделать это как быстрое решение, я создал запись NSDictionary для каждой фотографии и сохранил ее внутри массива в userPrefs. Я программно создал эскизы для каждого изображения для использования в свойстве cell.imageView.image, а затем использовал NSDictionary с @ "description", @ "imageName" и @ "imageNameThumbnail" в качестве ключей. Вы можете сделать то же самое с NSArray и просто вызвать objectAtIndex, но я предпочитаю простой текстовый словарь.

Вы можете попробовать проверить информацию о пути, которая возвращается. Вот несколько строк, чтобы попробовать:

NSString *path1 = [[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png"];
NSString *path2 = [[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png" inDirectory:@"folderName"];
NSLog(@"Path 1: %@",path1);
NSLog(@"Path 2: %@",path2);

Посмотрите, что вывод для этих строк, или если они ничего не возвращают.

Каталог документов в виде filePath

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectoryPath = [paths objectAtIndex:0];

Затем перечислите documentsDirectoryPath, и он должен рекурсивно читать подпапки.

0 голосов
/ 04 июля 2011

Если вы используете локальные данные, вы, вероятно, захотите поместить данные в файл .plist. Вы просто поместите туда имена файлов, а затем загрузите plist в NSDictionary, в котором у вас будет только один ключ для именованных «изображений» или что-то в этом роде. Затем вы можете загрузить все объекты под ключом «images» в массив и использовать этот массив для заполнения таблицы.

Надеюсь, это имеет смысл.

...