Показать основной вид при запуске и подробный вид на «слайдере» - PullRequest
0 голосов
/ 01 мая 2019

У меня есть контроллер разделенного вида, в горизонтальном компактном режиме я хотел бы, чтобы он отображал главный контроллер вида при запуске. По умолчанию контроллер разделенных видов загружает подробный вид при запуске. Это можно легко изменить с помощью этого фрагмента:

func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
  return true
}

Это прекрасно работает для меня, но когда "скользит" по новому виду и переходит от обычной горизонтальной ширины к компактной, основной вид отображается вместо подробного вида. Мне бы хотелось, чтобы подробный вид оставался отображаемым, поскольку пользователь уже выбрал его. Пример:

Example GIF

Когда я возвращаю false в приведенном выше фрагменте, я получаю желаемое поведение при скольжении, но, очевидно, теперь приложение будет начинаться с детализации, а не с мастера. Пример с collapseSecondary как false:

Example GIF

Есть ли способ получить лучшее из обоих миров? Начните с представления основного контроллера вида и отображения контроллера подробного вида при переходе от обычной горизонтальной ширины к компактной.

1 Ответ

1 голос
/ 02 мая 2019

Попробуйте, если при смене интерфейса вызывается splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool.

func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool {
    BOOL runningInSplitView //do logic check here based on windows bounds
    if(!runningInSplitView)
     return true;
    return false;
}


В противном случае вы должны правильно обработать, используя optional func primaryViewController(forCollapsing splitViewController: UISplitViewController) -> UIViewController? и его аналог

...