首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测我的控制器是否显示为弹出窗口

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

Stack Overflow用户
提问于 2019-03-26 18:29:38
回答 3查看 893关注 0票数 2

使用Xcode10.1和Swift 4.2.1,iOS 12

我在导航控制器里嵌入了一个表格视图。在右上角有一个栏按钮和一个从这个按钮到一个包含静态表格视图的导航控制器的分段(弹出),这里的单元格还有到其他表格视图的序列。

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

我试过了:

代码语言:javascript
运行
复制
print("\(presentationController)")
if presentationController is UIPopoverPresentationController {
    // Do something
}

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

我也尝试过:

代码语言:javascript
运行
复制
if popoverPresentationController != nil {
    print("popover")
}

但如果在iPhone或iPad上启动,则会打印popover。

我是不是做错了什么,还是错过了什么?

EN

回答 3

Stack Overflow用户

发布于 2019-03-31 19:25:58

目前我使用的是:

代码语言:javascript
运行
复制
if (popoverPresentationController?.arrowDirection != UIPopoverArrowDirection.unknown) {
    tableView.sectionHeaderHeight = CGFloat.leastNormalMagnitude
    tableView.sectionFooterHeight = CGFloat.leastNormalMagnitude
}

这很简单,而且很管用。如果有人真的有可能发现"if is popover",非常欢迎你在这里张贴。

票数 1
EN

Stack Overflow用户

发布于 2021-12-04 05:06:11

您可以简单地在显示的ViewController中检查这一点

代码语言:javascript
运行
复制
if self.modalPresentationStyle == .popover {
     print("Popover presentation")
}

如果呈现的视图控制器包含在导航控制器中,则使用此

代码语言:javascript
运行
复制
if self.navigationController?.modalPresentationStyle == .popover {
     print("Popover presentation")
}
票数 0
EN

Stack Overflow用户

发布于 2019-03-26 23:34:46

使用presentedViewController的"UIModalPresentationStyle“来检测演示样式是全屏还是弹出式。

你可以在这里找到更多细节:https://developer.apple.com/documentation/uikit/uimodalpresentationstyle

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55354899

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档