UISplitViewController в iOS 14 работает как задумано в ландшафтном режиме, но не в портретном - PullRequest
1 голос
/ 04 августа 2020

Я пытаюсь сохранить функциональность iOS 13 и UISplitViewController в моем приложении для iOS 14. Все работает, как задумано (два расположенных рядом контроллера) в ландшафтном режиме, но если я запускаю приложение ( контроллер разделения представления является исходным контроллером представления) в портретном режиме мой условный logi c для отображения контроллера основного представления, когда переменная в контроллере подробного представления равна нулю, не работает должным образом И панель навигации (элементы кнопок панели, большие заголовки) для первичного и детального представления контроллер не виден.

func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool  {
        
        if (secondaryViewController is UINavigationController) && (((secondaryViewController as? UINavigationController)?.topViewController) is DetailViewController) && (((secondaryViewController as? UINavigationController)?.topViewController as? DetailViewController)?.dict == nil) {

            return true

        } else {

            return false

        }

    }

Как ни странно, если я запускаю приложение в альбомной ориентации, а затем перехожу в портретную ориентацию, заголовки есть, полосы есть, и все работает как предназначена. Кажется, это проблема при первом запуске в портретном режиме.

1 Ответ

1 голос
/ 04 августа 2020

Решение состоит в том, чтобы использовать новый метод делегата topColumnForCollapsingToProposedTopColumn и вернуть .primary или .secondary по мере необходимости.

...