Я смог выполнить это, установив modalPresentationStyle = UIModalPresentationCurrentContext
на rootViewController моего UIWindow, ЕСЛИ я не представил никаких новых полноэкранных представленийКонтроллеры поверх этого rootViewController. Я сделал что-то вроде этого:
UIViewController *rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
rootViewController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:YES completion:nil];
Я пытался это как с UINavigationController как RootViewController моего окна и различными другими контроллерами пользовательского представления. Похоже, что rootViewController окна знает, что происходит, любые подзадачиКонтроллеры могут вызывать presentViewController:animated:completion:
, не закрывая основной вид.
Однако предположим, что вы представляете другой viewController поверх rootViewController вашего окна. И этот новый viewController представлен modalPresentationStyle = UIModalPresentationFullScreen
(т. Е. Занимает экран), тогда вам нужно позвонить modalPresentationStyle = UIModalPresentationCurrentContext
на этом самом верхнем viewController.
Подведем итоги:
- Если у вас есть UINavigationController -> UIViewController (s) (они могут быть задвинут и выскочил в и), то вы установите
modalPresentationStyle = UIModalPresentationCurrentContext
на UINavigationController.
- Если у вас есть UINavigationController -> UIViewController -> new-UIViewController (с modalPresentationStyle, установленным на UIModalPresentationFullScreen), то вы устанавливаете
modalPresentationStyle = UIModalPresentationCurrentContext
на new-UIViewController.
Надеюсь, это сработает и для вас, ребята! предложения
Каков стиль презентации ViewController, из которого вы представляете? – brynbodayle
@bbodayle, у меня такая же проблема, и я пробовал все стили презентации/комбинации на обоих ViewControllers. –