在 ipad 中模态显示视图并在 iphone 中推送

Posted

技术标签:

【中文标题】在 ipad 中模态显示视图并在 iphone 中推送【英文标题】:Display view modally in ipad and push in iphone 【发布时间】:2018-10-01 06:52:39 【问题描述】:

UIViewController 必须在 iPad 中以模态方式呈现,而在 iPhone 中则应推送。默认情况下,苹果是否支持相同的功能?

【问题讨论】:

不,您必须检测设备类型并相应地执行任务。 【参考方案1】:

您必须检测设备并相应地执行任务。

if UIDevice.current.userInterfaceIdiom == .pad 
    //present modally
 else if UIDevice.current.userInterfaceIdiom == . phone 
    //push

【讨论】:

【参考方案2】:

如前所述,您需要手动执行此操作。您可以检查您拥有的设备并决定如何展示您的视图控制器。

但这通常会产生一个巨大的问题,并且会大大增加您的应用程序的复杂性。由于您在一种情况下呈现,而在另一种情况下推送视图控制器,您还需要弹出或关闭它。这可以通过添加一些额外的属性轻松解决,但稍后当您想要关闭整个导航堆栈或类似内容时,它可能会再次干扰。更不用说深度链接的问题了。

因此,如果可能的话,我会尽量避免根据设备使用不同的视图控制器层次结构。如果可能的话,我会尝试简单地更改动画(我假设这就是你所需要的)。也许this 会有所帮助。

【讨论】:

以上是关于在 ipad 中模态显示视图并在 iphone 中推送的主要内容,如果未能解决你的问题,请参考以下文章

iPhone OS 3.2 (iPad) 模态视图问题

iPhone - 平滑显示 2 个连续的模态视图控制器

iphone - 将子视图添加到窗口后无法推送模态视图?

UIPopover 中显示时的 UINavigationController 内容偏移

iPhone/iPad 通用应用程序中 UIPopoverController 的“未找到符号”错误

显示键盘时在 iPad 上的表单中调整表格视图的大小