modalPresentationStyle = UIModalPresentationCurrentContext
このrootViewControllerの上に新しいフルスクリーンviewControllerを表示していない場合は、UIWindowのrootViewControllerに設定することでこれを実現できました。私はこのようなことをしました:
UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:YES completion:nil];
これを、ウィンドウのrootViewControllerとしてのUINavigationControllerと他のさまざまなカスタムViewControllerの両方で試しました。ウィンドウのrootViewControllerが何が起こっているかを知っている限り、どのサブviewControllerもpresentViewController:animated:completion:
、基になるビューをブラックアウトせずに呼び出すことができるようです。
ただし、ウィンドウのrootViewControllerの上に別のviewControllerを表示するとします。そして、この新しいviewControllerが表示されmodalPresentationStyle = UIModalPresentationFullScreen
(つまり、画面が表示されます)、modalPresentationStyle = UIModalPresentationCurrentContext
その最上位のviewControllerを呼び出す必要があります。
要約すると:
- UINavigationController-> UIViewController(s)(プッシュおよびポップインおよびポップアウト可能)がある場合は
modalPresentationStyle = UIModalPresentationCurrentContext
、UINavigationControllerを設定します。
- UINavigationController-> UIViewController-> new-UIViewController(modalPresentationStyleがUIModalPresentationFullScreenに設定されている)がある場合
modalPresentationStyle = UIModalPresentationCurrentContext
は、new-UIViewControllerを設定します。
うまくいけば、これはあなたたちにもうまくいくでしょう!