XCode - Как отобразить окно сообщения, которое позволяет пользователю вводить значения? - PullRequest
0 голосов
/ 05 октября 2011

Я разрабатываю это приложение на 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]];

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

1 Ответ

0 голосов
/ 05 октября 2011

Создайте маленький ViewController с UITextField и 2 кнопками для OK и ABORT и покажите его с помощью UIPopOverController. Вы должны знать, что вы должны проверить допустимые имена файлов, проверить уже существующие файлы (и разрешить перезапись).

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