У меня довольно стандартная иерархия представлений, в основном с UITabBarController
, содержащей несколько UINavigationController
.
Я создаю новый UINavigationController
и представляю его модально на одной из вкладок.
Я хочу, чтобы он отображался с UIModalPresentationCurrentContext
, поэтому я устанавливаю его так:
[newNavCon setModalPresentationStyle:UIModalPresentationCurrentContext];
И тогда я представляю это так:
[oldNavCon presentViewController:newNavCon animated:YES completion:nil];
Но когда он представлен, это полноэкранный режим, а не текущий контекст, который я установил.
Когда я смотрю на контрольные точки, модальный стиль представления на newNavCon
изменяется на UIModalPresentationFullScreen
сразу после presentViewController
.
Что меня действительно смущает, так это то, что такое поведение происходит только на iOS7. Он работает точно так, как ожидалось, на iOS 8-10.
Почему это происходит? Есть ли какая-то особая особенность, о которой я не знаю в iOS7? Почему стиль презентации может быть переопределен таким образом?
EDIT: Чтобы уточнить, вот иерархия представлений, с которой я работаю:
UIViewController
(как контейнер, полноэкранный режим)UITabBarController
(not fullscreen, as controlled by the container)definesPresentationContext
UINavigationController
(as tab root, presents the modal window)definesPresentationContext
UINavigationController
(presented modally by the aboveUIViewController
)modalPresentationStyle
=UIModalPresentationCurrentContext
UIViewController
presentViewController
. К сожалению, я не мог понять этого. Я не видел ничего, с чем я мог бы работать. - person ABeard89   schedule 30.01.2017