0

UIViewControllerセットアップは次のとおりですUITableView。セルの 1 つに触れると、アクション シートが表示され、ライブラリから写真を選択するか、新しい写真を撮るオプションが提供されます。どちらの場合も、次のUIImagePickerControllerように表示します。

私のインターフェース宣言で

UIImagePickerController* imageController;

ビューでDidLoad:

imageController = [[UIImagePickerController alloc] init];
imageController.delegate = self;
imageController.allowsEditing = YES;

私のアクションシートデリゲートメソッドで

if(buttonIndex == 2)
    return;

UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;

if(buttonIndex == 1)
    sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

imageController.sourceType = sourceType;

[self presentModalViewController:imageController animated:YES];

これで問題なく動作し、イメージ ピッカーが表示されます。ただし、この時点から、ナビゲーション コントローラーが正しく動作しないようです。電話できる

[self.navigationController popViewControllerAnimated:YES];

ナビゲーション バーのタイトルは通常のポップ アニメーションで変わりますが、コントローラー自体は消えません。これは、イメージ ピッカー コントローラーが表示された後にのみ発生します。コントローラーを表示する前にアクションシートをキャンセルできますが、まったく問題ありません。

このアプリは既に公開されているため、短いビデオへのリンクを含めました。これは単なる再構築です。

http://screencast.com/t/qBolp2v3iCyR

ナビゲーションコントローラーとタブバーコントローラーからモーダルを表示しようとしました-同じ結果です。この呼び出しを使用して、別の表示方法を試しました。

[self presentViewController:imageController animated:YES completion:^{}];

ナビゲーション コントローラーが nil ではないこと、および適切なコントローラーがスタック上にあることを確認しました。どんな助けでも大歓迎です。前もって感謝します。

4

2 に答える 2

0

でviewControllerを表示する場合は、これを試してください

[self presentModalViewController:imageController animated:YES];

でビューを閉じる必要があります

[imageController dismissViewControllerAnimated:YES completion:nil];

popViewController は、pushViewController でビューを表示するときに使用するためです。

私の悪い英語でごめんなさい。

于 2013-01-09T09:42:58.530 に答える
0

を使用して追加されたコントローラーを閉じるには、presentModalViewController:animated:使用する必要があります

[self.navigationController dismissModalViewControllerAnimated:YES]
于 2013-01-09T09:43:11.157 に答える