ホーム画面からモーダルに表示される UIImagePickerController があります。今私の理解では、UIImagePickerController は UINavigationController のサブクラスであり、ルート ビュー コントローラーとして機能します。だから私はこれを簡単に行うことができます:
@interface SCTCameraViewController : UIImagePickerController <UINavigationControllerDelegate, UIImagePickerControllerDelegate>
@end
ビューでDidLoad:
[self setDelegate:self];
その後、呼び出し[self pushViewController:viewController animated:YES];
は正常に機能し、指定されたView Controllerに正常に移動します。SCTViewController にあるカスタム UIButton が、プッシュする次のビュー コントローラーにくっつくという奇妙なことが 1 つあります。私は簡単に[button removeFromSuperView];
問題なく呼び出すことができます。なぜそのボタンが固執し、スタックにプッシュする UIImagePickerController とビュー コントローラーの両方の上にとどまるのか、本当に興味があります。ナビゲーションについては奇妙で技術的なものでなければなりませんが、誰かが何か考えを持っているなら、答えを知りたいです.
だから私の主な問題。ストーリーボードには、UIImagePickerController とナビゲーション スタックにプッシュするビュー コントローラーを接続するプッシュ セグエがあります。ただし、 を呼び出す[self performSegueWithIdentifier:@"viewControllerToPush" sender:self];
と、アプリがクラッシュし、次のエラーがスローされます。
キャッチされていない例外 'NSGenericException' が原因でアプリを終了しています。理由: 'セグエ 'cutoutViewModal' のナビゲーション コントローラーが見つかりませんでした。プッシュ セグエは、ソース コントローラーが UINavigationController のインスタンスによって管理されている場合にのみ使用できます。
UIImagePickerController はナビゲーション コントローラーであるという印象を受けましたが、明らかに間違っています。ストーリーボードにナビゲーション コントローラーを明示的に配置し、ルート ビュー コントローラーを UIImagePickerController に接続する必要がありますか? 私はそれを試しましたが、残念ながら運がありませんでした。
何が起こっているのか、どうすれば修正できるのか、誰にも分かりますか? を使用するだけで満足しています[self pushViewController:vc animated:YES];
。むしろ、他の方法が期待どおりに機能しない理由を理解したいと思います。
ありがとう!
編集1:私が行ったストーリーボードで
エディター > 埋め込み > ナビゲーション コントローラー
これですべてがうまく接続されましたが、ルート ビュー コントローラーに移動しようとすると、XCode デバッグ パネルが少し回転し、その後、不正なアクセス エラーでクラッシュしました。