Если вы проверите presentingViewController
на ContentModalDetailVC
, вы увидите, что он фактически представлен ContainerVC
, а не ContentPortraitVC
.
Чтобы исправить это, вам просто нужно установить definesPresentationContext
(или установите флажок «Определяет контекст» в Interface Builder) на ContentPortraitVC
.
Это позволит ContentPortraitVC
обрабатывать модальную презентацию вместо того, чтобы передавать цепочку ответчиков на следующий контроллер представления, который определяет контекст представления (по умолчанию контроллер корневого представления).
Вероятно, вы захотите ContentLandscapeVC
также определить контекст, чтобы избежать такой же проблемы.
Когда оба дочерних контроллера определяют свой собственный контекст представления, когда ContainerVC
решает обменять детей, любой модальный модал будет удален из новой иерархии вместе с дочерним элементом, который его представил. Нет необходимости делать взломанные вещи, чтобы попытаться уволить их перед заменой:)
Изменить: Я должен добавить, что представленный диспетчер представлений должен иметь свой modalPresentationStyle
Установить либо currentContext
или overCurrentContext
,