Определить, представлен ли мой контроллер как поповер - PullRequest
0 голосов
/ 26 марта 2019

Использование Xcode 10.1 и Swift 4.2.1, iOS 12

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

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

Я пробовал:

print("\(presentationController)")
if presentationController is UIPopoverPresentationController {
    // Do something
}

Но это не работает -> print("\(presentationController)") дает мне Optional(<_UIFullscreenPresentationController: 0x7fd00ad45770>) на iPhone и iPad.

Я пробовал также с:

if popoverPresentationController != nil {
    print("popover")
}

Но всплывающее окно печатается, если запущено на iPhone или iPad.

Я что-то здесь не так делаю или я что-то упускаю?

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

В настоящее время я использую это:

if (popoverPresentationController?.arrowDirection != UIPopoverArrowDirection.unknown) {
    tableView.sectionHeaderHeight = CGFloat.leastNormalMagnitude
    tableView.sectionFooterHeight = CGFloat.leastNormalMagnitude
}

Это просто, и это работает.В случае, если у кого-то есть реальная возможность узнать, «если это поповер», вы можете опубликовать его здесь.

0 голосов
/ 26 марта 2019

Используйте «UIModalPresentationStyle» представленного ViewController для определения стиля представления - полноэкранный или всплывающий.

Подробнее вы можете найти здесь: https://developer.apple.com/documentation/uikit/uimodalpresentationstyle

...