3

ボタンが押されたときに (ストーリーボードから) 新しい UIView をロードするこのコードがあります。goPressed 関数は、ボタンが押されたときに起動され、selectImage 関数を呼び出します。selectImage は UIImagePickerController を開き、ユーザーが写真を選択できるようにします。ユーザーが写真を選択すると、didFinishPickingMediaWithInfo デリゲートが選択した画像を UIImageView に追加します。

「goPressed」では、selectImage が実行された後、//1 とコメントされているように Segue を実行する必要があります。しかし、何も起こりません。performSegueWithIdentifier が機能していないようです。そして、performSegueWithIdentifier を呼び出す前に [self selectImage] を呼び出さなければ、機能します。コードは次のとおりです。

- (IBAction)goPressed:(id)sender {
    [self selectImage];
    [self performSegueWithIdentifier:@"lastView" sender:currentSender]; //1
}
-(void)selectImage
{
    // Create image picker controller
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];

    // Set source to the camera
    imagePicker.sourceType =  UIImagePickerControllerSourceTypePhotoLibrary;

    // Delegate is self
    imagePicker.delegate = (id)self;

    // Allow editing of image ?
    imagePicker.allowsEditing=NO;


    // Show image picker
    [self presentModalViewController:imagePicker animated:YES];


}

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    // Access the uncropped image from info dictionary
    UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

    [[picker presentingViewController] dismissModalViewControllerAnimated:YES];


    lePreview.image= image;


}

なぜ performSegueWithIdentifier が機能しないのですか? 必要な情報が欠落していないことを願っています。

4

1 に答える 1