检测我的控制器是否显示为弹出窗口

时间:2019-03-26 10:29:38

标签: ios swift xcode storyboard uipopovercontroller

使用Xcode 10.1和Swift 4.2.1,iOS 12

我在导航控制器中嵌入了一个表格视图。右上角有一个条形按钮和一个从该按钮到导航控制器的segue(弹出窗口),该导航控制器具有静态表格视图,此处的单元格具有到其他表格视图的进一步segue。

在iPhone上,静态表格视图以全屏模式显示;在iPad上,它是一个弹出窗口,到目前为止还可以。 我已经在情节提要中设置了所有内容,不知道这可能是原因,但是现在我正在努力查看视图是弹出框还是全屏模式。

我尝试过:

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

但这不起作用-> print("\(presentationController)")在iPhone和iPad上给了我Optional(<_UIFullscreenPresentationController: 0x7fd00ad45770>)

我也尝试过:

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

但是如果在iPhone或iPad上启动,则会打印出弹出窗口。

我在这里做错什么了吗?还是我错过了什么?

2 个答案:

答案 0 :(得分:0)

使用presentedViewController的“ UIModalPresentationStyle”来检测呈现样式是全屏显示还是弹出窗口。

您可以在此处找到更多详细信息:https://developer.apple.com/documentation/uikit/uimodalpresentationstyle

答案 1 :(得分:0)

当前我正在使用此

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

这很容易,并且有效。如果有人真的有可能发现“如果是弹出窗口”,非常欢迎您在此处发布。