0

NavigationController (NavC1) に埋め込まれた別の ViewController (VC2) をモーダルで開く ViewController (VC1) があります。VC2 は、ユーザーが組み込みのフォト ライブラリなどのさまざまなソースを選択するためのソース選択ビューとして使用されます。ユーザーが VC2 でフォト ライブラリを選択すると、Apple の imagePicker が開きます。

VC1 --(modal)--> NavC1 ----> VC2

imagePickerdidFinish では、VC2 をモーダルに提示する前に閉じたいと思います。実際、このメソッドは次のようになります。

-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];

    ...

    NSError* error;
    if([UIImageJPEGRepresentation(image, 0.5) writeToFile:path options:NSDataWritingFileProtectionComplete error:&error] == NO)
    {
        NSLog(@"Saving image to file failed with error %@",[error localizedDescription]);
    }

    picker.delegate = nil;
    [self dismissModalViewControllerAnimated:YES];
    ...
}

私がこれまでに試したこと:

  • 親ナビゲーションコントローラーを使用して却下しようとしました
  • VC1 のVC2 への参照を保存しprepareForSegue:、imagePicker が終了したときに VC2 から VC1 にデリゲートを渡しました。この方法では、モーダル ビューを手動で単純に非表示にしようとしました ( [self.myModalView dismissModalViewControllerAnimated:YES])

誰か私に提案がありますか?前もって感謝します!

4

1 に答える 1

0

それまでに VC2 に参加する[self.navigationController PushViewController:VC2Object animated:YES];場合は、ポップする必要があります。[self.navigationController popViewController];

それまでに VC2 に参加する場合は、次の[self.navigationController presentedViewController];ことを行う必要があります。[self dismissModalViewControllerAnimated:YES];

したがって、VC2 viewController をメモリにロードする方法を確認してください。

于 2012-07-16T06:47:01.310 に答える