Ich konnte dies erreichen, indem ich modalPresentationStyle = UIModalPresentationCurrentContext
auf dem rootViewController meiner UIWindow, wenn ich keine neuen Vollbild-ViewControllern auf diesem rootViewController vorgestellt. Ich habe so etwas wie dies:
UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:YES completion:nil];
Ich habe schon versucht, diese sowohl mit einer UINavigationController als mein Fenster des RootViewController und verschiedene andere benutzerdefinierte Ansicht Controller. Es scheint, solange der rootViewController des Fensters weiß, was vor sich geht, können alle sub-viewControllers presentViewController:animated:completion:
aufrufen, ohne die zugrunde liegende Ansicht auszublenden.
Nehmen wir an, Sie präsentieren einen anderen viewController über dem rootViewController Ihres Fensters. Und dieser neue viewController wird mit modalPresentationStyle = UIModalPresentationFullScreen
präsentiert (dh nimmt den Bildschirm auf), dann müssen Sie modalPresentationStyle = UIModalPresentationCurrentContext
auf diesem obersten ViewController aufrufen.
So zu rekapitulieren:
- Wenn Sie UINavigationController haben -> UIViewController (n) (sie geschoben werden konnte und in die und aus knallte), dann setzen Sie
modalPresentationStyle = UIModalPresentationCurrentContext
auf dem UINavigationController.
- Wenn Sie UINavigationController -> UIViewController -> new-UIViewController (mit modalPresentationStyle auf UIModalPresentationFullScreen gesetzt) haben, dann setzen Sie
modalPresentationStyle = UIModalPresentationCurrentContext
auf dem neuen UIViewController.
Hoffentlich funktioniert das für euch auch!
Wie ist der Präsentationsstil des ViewControllers, von dem Sie präsentieren? – brynbodayle
@bbodyle, ich habe das gleiche Problem, und ich habe alle Präsentation Stile/Kombinationen auf beiden ViewControllern versucht. –