Ios 检测我的控制器是否显示为popover

Ios 检测我的控制器是否显示为popover,ios,swift,xcode,storyboard,uipopovercontroller,Ios,Swift,Xcode,Storyboard,Uipopovercontroller,使用Xcode 10.1和Swift 4.2.1,iOS 12 我在导航控制器中嵌入了一个tableview。在右上角,一个条形按钮和一个从该按钮到一个导航控制器的分段(popover),导航控制器持有一个静态表视图,在这里,单元格进一步分段到其他表视图 在iPhone上,静态表格视图显示为全屏模式,在iPad上,它是一个popover,到目前为止还可以。 我已经在故事板中设置了所有内容,不知道这是否是原因,但现在我正在努力检查视图是popover还是全屏模式 我试过: print("\(pre

使用Xcode 10.1和Swift 4.2.1,iOS 12

我在导航控制器中嵌入了一个tableview。在右上角,一个条形按钮和一个从该按钮到一个导航控制器的分段(popover),导航控制器持有一个静态表视图,在这里,单元格进一步分段到其他表视图

在iPhone上,静态表格视图显示为全屏模式,在iPad上,它是一个popover,到目前为止还可以。 我已经在故事板中设置了所有内容,不知道这是否是原因,但现在我正在努力检查视图是popover还是全屏模式

我试过:

print("\(presentationController)")
if presentationController is UIPopoverPresentationController {
    // Do something
}
但这不起作用->
print(\(presentationController)”
在iPhone和iPad上为我提供了
Optional()

我也尝试过:

if popoverPresentationController != nil {
    print("popover")
}
但如果在iPhone或iPad上发布,popover是打印的

我是做错了还是遗漏了什么?

使用presentedViewController的“UIModalPresentationStyle”检测演示样式是否为全屏或popover


您可以在此处找到更多详细信息:

目前我正在使用此:

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

这很简单,而且很有效。如果有人真的有可能发现“如果是流行音乐”,欢迎你在这里发布

@RajSharma我已经读过了。最初的问题写在3年半前,iOS8。官方标记的答案只是一个没有任何代码的小描述,顺便说一下,我试过了,但没能随附。此外,我发现的其他答案甚至更为古老,并且在目标c中(以前从未使用/编写过目标c)。因此,我猜iOS 12中与iOS 8相比有“一些”更改和更新,这可能更容易检查popover中是否有。@Leo,下面的答案解决了这个问题吗?我很快添加了
print(“ModalPresentationStyle:\(presentedViewController?.ModalPresentationStyle)”
,但在这两种情况下都是
nil
@Leo,您能在GitHub中共享代码,以便我们查看并解决此问题吗?我尝试了此方法,但发现它是
.popover