Импорт нескольких изображений из библиотеки фотографий в приложение - PullRequest
0 голосов
/ 20 июня 2011

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

Если кто-то может сказать мне, что я делаю неправильно, я оченьценить это!Спасибо!SBB

Вот мой код:

@implementation FlipBook2ViewController


- (IBAction)selectExistingPicture {
    if ([UIImagePickerController isSourceTypeAvailable:
         UIImagePickerControllerSourceTypePhotoLibrary]) {
        UIImagePickerController *picker =
        [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.allowsImageEditing = NO;
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [self presentModalViewController:picker animated:YES];
        [picker release];
    }
    else {
        UIAlertView *alert = [[UIAlertView alloc] 
                              initWithTitle:@"Error accessing photo library" 
                              message:@"Device does not support a photo library" 
                              delegate:nil 
                              cancelButtonTitle:@"Dismiss" 
                              otherButtonTitles:nil];
        [alert show];
        [alert release];
    }
}


- (IBAction)selectExistingPicture2 {
    if ([UIImagePickerController isSourceTypeAvailable:
         UIImagePickerControllerSourceTypePhotoLibrary]) {
        UIImagePickerController *picker =
        [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.allowsImageEditing = NO;
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [self presentModalViewController:picker animated:YES];
        [picker release];
    }
    else {
        UIAlertView *alert = [[UIAlertView alloc] 
                              initWithTitle:@"Error accessing photo library" 
                              message:@"Device does not support a photo library" 
                              delegate:nil 
                              cancelButtonTitle:@"Dismiss" 
                              otherButtonTitles:nil];
        [alert show];
        [alert release];
    }
}


#pragma mark  -
- (void)imagePickerController:(UIImagePickerController *)picker 
        didFinishPickingImage:(UIImage *)image
                  editingInfo:(NSDictionary *)editingInfo {
    imageView.image = image;
    [picker dismissModalViewControllerAnimated:YES];

}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {

    [picker dismissModalViewControllerAnimated:YES];
}

1 Ответ

0 голосов
/ 20 июня 2011

Ваш imageView в методе делегата imagePickerController:didFinishPickingImage:editingInfo: не меняется.Вероятно, у вас должна быть переменная экземпляра для текущего представления изображения, скажем что-то вроде currentImageView, и они реализуют метод делегата, например,

- (void)imagePickerController:(UIImagePickerController *)picker 
        didFinishPickingImage:(UIImage *)image
                  editingInfo:(NSDictionary *)editingInfo {
    currentImageView.image = image;
    [picker dismissModalViewControllerAnimated:YES];

}

Чтобы это работало, вам придется изменить selectExistingPictureнемного.

- (IBAction)selectExistingPicture {
    if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypePhotoLibrary]) {

        currentImageView = imageView1; // Set it to the image view that will get changed

        [..]
    }
    else {
        [..]
    }
}

Однако вам придется делать это для каждого метода.Я не уверен, каков точный триггер для этого метода, но было бы целесообразно иметь аргумент sender в методе действия, чтобы избежать повторения.

- (IBAction)selectExistingPicture:(id)sender {
    switch(sender.tag) {
        /* set `currentImageView` based on the tag */
    }

    /* Rest of your method from the question remains the same */
}
...