1

で選択された1つのView Controllerに2つの画像がありますUIImagePickerController

ChoosePhotosViewController.h

@interface PickPhotosViewController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate>
@property (strong, nonatomic) IBOutlet UIImageView *pickedImage1; // image 1
@property (strong, nonatomic) IBOutlet UIImag8eView *pickedImage2; // image 2

- (IBAction)pickImage1:(id)sender; // button that picks up the first image
- (IBAction)pickImage2:(id)sender; // button that picks up the seconds image
- (IBAction)nextButton:(id)sender;

実装ファイルで -ChoosePhotosViewController.m

@implementation PickPhotosViewController
@synthesize pickedImage1, pickedImage2;

ボタンごとに、アクションのリストを含むアクション シートを呼び出すコードを作成しました。

-(IBAction)pickImage1:(id)sender {
[[NSUserDefaults standardUserDefaults] setInteger:CurrentImageCategoryImage1 forKey:@"currentImageCategory"];
[[NSUserDefaults standardUserDefaults] synchronize];

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Choose image one" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Choose existing photo", @"Take new photo", nil];
[actionSheet showInView:self.view];
}

2 つのアクションがあります - カメラから写真を撮り、ライブラリからアップロードします。

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
if (buttonIndex == 0) {
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentViewController:picker animated:YES completion:NULL];
    }
else if (buttonIndex == 1) {
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentViewController:picker animated:YES completion:NULL];
    }
}

2 番目のボタンの同様のアルゴリズム。それからUIImagePickerController私が書いた方法で;

-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary*)info { 

UIImage *chosenImage = info[UIImagePickerControllerEditedImage];    

if([[NSUserDefaults standardUserDefaults] integerForKey:@"currentImageCategory"] ==CurrentImageCategoryImage1)
    {
    self.pickedImage1.image = chosenImage;
    }
else if([[NSUserDefaults standardUserDefaults] integerForKey:@"currentImageCategory"] ==CurrentImageCategoryImage2)
    {
    self.pickedImage2.image = chosenImage;
    }
}

次に、「次へ」ボタンをクリックしたときに、これらの 2 つの画像を次の viewController に表示する必要があります。私はストーリーボードを扱っているので、prepareForSegueメソッドを書きました:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

if ([segue.identifier isEqualToString:@“next"]) {
    TypeTextViewController *transferedImage = [segue destinationViewController];
    transferedImage.imageWithText1 = pickedImage1;
    }   
}

どこimageWithText1で aUIImageViewと で宣言されTypeTextViewController.hていますが、ボタンをクリックすると画像が に表示されませんTypeTextViewController

どこに問題がありますか?

4

3 に答える 3

1

NSMutableArrayを作成し、この 2 つの画像をこの配列に追加します。次に、この NSMutableArray を別のビュー コントローラーに渡す必要があります。

これがお役に立てば幸いです。

于 2014-12-24T06:53:04.383 に答える