Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 用于关闭UIPopoverPresentationController提供的视图控制器的UI,而不考虑大小类_Ios_Objective C_Swift_Uiviewcontroller - Fatal编程技术网

Ios 用于关闭UIPopoverPresentationController提供的视图控制器的UI,而不考虑大小类

Ios 用于关闭UIPopoverPresentationController提供的视图控制器的UI,而不考虑大小类,ios,objective-c,swift,uiviewcontroller,Ios,Objective C,Swift,Uiviewcontroller,我有一个通用的应用程序,Xcode 7 Beta版,目标是iOS 8 我正在使用UIPopoverPresentationController演示一个视图控制器 当以任何常规尺寸类别(如任何方向的全屏iPad)显示时,视图控制器显示为弹出框,大小为我在preferredContentSize属性中设置的大小。点击视图控制器边界以外的位置将关闭弹出窗口 当以紧凑的宽度大小显示时(例如,任何纵向的iPhone),“popover”将成为一个全屏视图,从下到上滑动 问题 虽然iPad popover具

我有一个通用的应用程序,Xcode 7 Beta版,目标是iOS 8

我正在使用
UIPopoverPresentationController
演示一个视图控制器

当以任何常规尺寸类别(如任何方向的全屏iPad)显示时,视图控制器显示为弹出框,大小为我在
preferredContentSize
属性中设置的大小。点击视图控制器边界以外的位置将关闭弹出窗口

当以紧凑的宽度大小显示时(例如,任何纵向的iPhone),“popover”将成为一个全屏视图,从下到上滑动

问题

虽然iPad popover具有内置的免职行为(即点击popover外部),但全屏显示的“popover”却没有。因此,需要一些用户界面,以便为用户提供一种消除弹出窗口的方法

问题

为了让用户可以选择关闭(全屏)“popover”视图控制器,最好的(推荐的?)显示UI的方式是什么,以便它只显示在紧凑的宽度大小类中

讨论

我看到的一种方法是将[View Controller to presented]嵌入到
UINavigationController
中。导航栏中添加了一个栏按钮,但我们可以告诉演示视图控制器关闭演示

然而,这不仅需要为iPad上原本简单的显示视图控制器提供一个额外的、不需要的层次结构,而且还需要在
viewDidLoad
中进行环境检查(idiom?size class?),以编程方式隐藏
NavigationBar
,如果使用的是常规宽度大小的类(例如iPad)。这让我觉得。。。脆弱的

另一个选项是执行上述操作,但使用Interface Builder中的大小类以非编程方式安装/卸载导航元素

想法


相关链接,

查看Interface Builder,您可以根据应用程序上当前运行的大小类提供任何视图:)如果我记得很清楚(因为我现在在公交车上无法检查),您可以在所选视图的属性检查器选项卡中指定特定大小类中可用的视图。这样,您只需添加一个按钮或导航栏,其中包含视图中的项目,并使其仅适用于紧凑的宽度:)今天我将更详细地检查,为您提供一些屏幕截图:)