0

複数のコントローラーを備えたタブバーアプリケーションがあります。いくつかはUINavigationControllersシンプルUIViewControllersです。中央のボタンはUIImagePickerController、ユーザーが写真を撮ることができるようにします。単純な からイメージ ピッカーを表示すると、UIViewControllers正常に動作します。しかし、 aUINavigationControllerが現在であるときにそれを提示するselectedViewControllerと、ピッカーの dismall によってUINavigationBarコントローラーの が削除されます。

UINavigationControllersでは、モーダル ビューを から表示する必要があることを読みましたnavigationControllerが、どちらも機能しません。ここにコードの束があります:

    UIImagePickerController* picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    if (TARGET_IPHONE_SIMULATOR)
    {
        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    }
    else
    {
        if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
        {
            picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        }
        else
        {
            UIAlertView* alert = [[UIAlertView alloc]
                                  initWithTitle:@"Erreur"
                                  message:@"Pour pouvoir poster des photos, votre device doit posséder un appareil photo"
                                  delegate:self
                                  cancelButtonTitle:@"OK"
                                  otherButtonTitles:nil];
            [alert show];
            return;
        }
    }
    if ([self.selectedViewController respondsToSelector:@selector(presentViewController:animated:completion:)])
    {
        [self.selectedViewController presentViewController:picker animated:YES completion:nil];
    }
    else
    {
        [self.selectedViewController presentModalViewController:picker animated:YES];
    }

ディスモール :

[self.selectedViewController dismissModalViewControllerAnimated:YES];

UIImagePickerController誰かがこの奇妙な動作をして (デリゲートが実装しなければならないという事実と関係があると思いますUINavigationControllerDelegate)、それを解決する方法を知っていますか? ありがとう。

4

2 に答える 2

1

実際にはもっと単純でした。viewWillAppearでは、hiddenプロパティをに設定しNO、では、viewWillDisappearに設定しましたYES。事は:モーダルコントローラーが提示されたとき、viewWillDisappearが呼び出されました。しかし、それが却下されたとき、viewWillAppearは呼び出されませんでした...実際には期待された動作ではありませんが、それでも。みんなありがとう。

于 2012-11-30T13:54:16.423 に答える