Я разрабатываю это приложение на iPad.
Он имеет функцию, которая позволяет пользователю сохранять изображения из фотогалереи iPad в приложение через NSDocumentDirectory.
На первом экране есть кнопка обзора, кнопка подтверждения и один просмотр изображения.
Кнопка обзора отображает фотографии из фотогалереи iPad и позволяет пользователю выбрать фотографию.
Кнопка подтверждения сохранит выбранную фотографию в NSDocumentDirectory.
Кнопка просмотра:
- (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];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)selectedImage editingInfo:(NSDictionary *)editingInfo
{
[self.popoverController dismissPopoverAnimated:YES];
imageView.image = selectedImage;
}
Кнопка подтверждения:
- (IBAction) confirmPhoto:(id)sender
{
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];
}
Я использовал эти коды, чтобы опробовать ОДИН образ, поэтому он будет работать отлично.
Но через некоторое время я обнаружил, что должен разрешить пользователю хранить более одной фотографии. Мои коды не могут этого сделать, потому что я каким-то образом «жестко закодировал» имя файла SavedImage.png, и новое изображение просто заменит старое изображение.
Я подумал о способе решения этой проблемы, который заключается в использовании счетчика для именования изображений, когда я сохраняю их в своем приложении.
Примерно так:
NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"%d.png", counter]];
Но это не будет хорошим соглашением об именах для моих изображений. Я хочу сохранить их с именами. Я подумал о том, что когда пользователь нажимает на кнопку подтверждения, приложение отображает окно сообщения, которое запрашивает и позволяет пользователю ввести имя выбранного изображения. Изображение будет сохранено как имя, введенное пользователем.