Отображение фотографий из NSDocumentDirectory - PullRequest
5 голосов
/ 04 октября 2011

Я разрабатываю это приложение на iPad.

Эти коды для кнопки «Обзор» позволяют пользователю просматривать фотографии из галереи iPad.

- (IBAction) BrowsePhoto:(id)sender
{
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];
imagePickerController.delegate = self;
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:imagePickerController];
[popover setPopoverContentSize:CGSizeMake(320,320)];
[popover presentPopoverFromRect:CGRectMake(200,200,-100,-100) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
self.popoverController = popover;
[imagePickerController  release];
}

Когдафотография выбрана, она будет сохранена в приложении с помощью NSDocumentDirectory.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)selectedImage editingInfo:(NSDictionary *)editingInfo 
{
[self.popoverController dismissPopoverAnimated:YES];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:@"SavedImage.png"];
UIImage *image = imageView.image;
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:savedImagePath atomically:NO];
}

Теперь мне нужно включить кнопку «Показать» на первом экране.При нажатии на кнопку, он будет отображать новый вид (контроллер модального представления) и отображает все фотографии в виде миниатюр / табличного представления из NSDocumentDirectory.

Когда фотография выбрана, она будет удалена из NSDocumentDirectory.

Как я могу это сделать?

1 Ответ

2 голосов
/ 04 октября 2011

Прежде всего, при сохранении изображения в папке «Документы», попробуйте сохранить его в соответствии с соглашением об именах, например, сохранить переменную counter и дать вашим изображениям имена в соответствии с ней. Примерно так:

NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.png", counter]];

Теперь, когда все изображения сохранены в папке документов и вы хотите получить их все, вы можете получить их, написав этот код:

 -(NSMutableArray *)GetImage:(NSMutableArray *)arrayImgNames
 {
      NSMutableArray *tempArray;
            for(int i=0;i<[arrayImgNames count]; i++)
     {
        NSArray *paths1 = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths1 objectAtIndex:0];
        NSString *filePath = [documentsDirectory stringByAppendingPathComponent: [arrayImgNames objectAtIndex:i]];
        [tempArray addObject:[[UIImage alloc] initWithContentsOfFile:filePath]];
        return tempArray;
     }
 }

После получения всех изображений их можно отобразить в виде миниатюр, а затем, когда вы хотите удалить изображение, используйте этот метод:

 -(int)removeImage:(NSString*)FileName1
 {
     NSFileManager *filemanager=[NSFileManager defaultManager]; 
     NSArray *path1=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);  
     NSString *documentdirectory = [path1 objectAtIndex:0]; 
     NSString *filepath=[documentdirectory  stringByAppendingPathComponent:FileName1];
     if([filemanager fileExistsAtPath:filepath]==TRUE)
     {
        [filemanager removeItemAtPath:filepath error:nil];
     }  
     return 0;
 }

Надеюсь, это поможет вам.

Чтобы заполнить таблицу изображением, вам понадобится пользовательская ячейка. Вы можете обратиться к руководству Apple под названием AdvancedTableViewCells . Он покажет вам, как вы можете заполнить таблицу с изображениями. У них есть главный эскиз в каждом ряду. Вы должны настроить его и сделать его 3 или 4 эскиза в соответствии с вашими требованиями. Кроме этого, удалите все из этой пользовательской ячейки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...