1

まず、私が何をしようとしているあなたを教えてみましょう:UIImagePickerControllerのソースタイプをユーザーが選択できるようにするにはどうすればいいですか?

  1. ユーザーがボタンをクリックすると、私はそのcontentViewControllerとしてUINavigationControllerUIPopoverControllerを提示したい(これはiPadである)
  2. 最初のUIViewControllerUINavigationControllerにプッシュされ、「写真を撮る」と「ライブラリから選択」の2つのボタンを持つカスタムビューコントローラーになります。
  3. UIImagePickerControllerの意志setSourceType:UIImagePickerControllerSourceTypeCamera「写真を撮る」ボタンをタッチするとUIImagePickerControllerUINavigationController
  4. 「を選択し、ライブラリから」ボタンをタッチする意志setSourceType:UIImagePickerControllerSourceTypePhotoLibraryにそれをプッシュし、UINavigationController

に押し込みI UINavigationControllerが許す限り、これをすべて行い、ユーザーが後方にナビゲートできるようにしたいと考えています。

UIImagePickerControllerUINavigationControllerであるため、#3と#4に記載されているように別のUINavigationControllerにプッシュできません。

質問:

  1. カメラ/フォトライブラリビューコントローラの前にプッシュされたカスタム・ビュー・コントローラとUIImagePickerControllerを使用するために私のための方法はありますか?
  2. 逆に、カメラ/フォトライブラリビューコントローラにアクセスして別のUINavigationControllerにプッシュする方法がありますか?
  3. ここに私が完全に欠けている別の方法がありますか?

答えて

0

次のコード(詳細はhere)を追加すると、最終的に私にとってこの問題が解決されました。

navigationController:willShowViewController:animated:メソッドを使用してナビゲーションバーにアクセスします。

このコードでは、「キャンセル」ボタンを追加できます。

if ([navigationController isKindOfClass:[UIImagePickerController class]]) { 

    UINavigationBar *bar = navigationController.navigationBar; 
    UINavigationItem *top = bar.topItem; 

    UIBarButtonItem *cancel = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(imagePickerControllerDidCancel:)]; 
    [top setLeftBarButtonItem:cancel]; 

} else { 

    //do non imagePickerController things 

} 
関連する問題