当前位置: 首页 > 知识库问答 >
问题:

在iPad上显示视图控制器仅允许。爆米花

南门星河
2023-03-14

我有一个iPhone应用程序,我正试图使其通用化。我有以下代码:

let documentMenu = UIDocumentMenuViewController(documentTypes: [kUTTypeContent as String], inMode: .Import)
documentMenu.modalPresentationStyle = .FormSheet
documentMenu.delegate = self
self.presentationContext.presentViewController(documentMenu, animated: true, completion: nil)

self。presentationContext只是传递到类中的视图控制器。

每次执行此代码时,都会发生以下错误:

您的应用程序提供了一个UIDocumentMenuViewController()。在当前的trait环境中,具有此样式的UIDocumentMenuViewController的modalPresentationStyle是UIModalPresentationPopover。您必须通过视图控制器的popoverPresentationController提供此弹出窗口的位置信息。您必须提供源视图和源Rect或barButtonItem。如果在显示视图控制器时不知道此信息,则可以在UIPopoverPresentationControlller委托方法-preareForPopoverPresations中提供。

我不知道发生了什么事。我甚至试着设置sourceViewsourceRect,这会阻止错误,但是,它会将DocumentMenuViewController粘贴到一个弹出窗口中,我不知道这是什么。我需要在屏幕中央显示这个。感谢您的帮助。

共有3个答案

贺卜霸
2023-03-14
let documentMenu = UIDocumentMenuViewController(documentTypes: [kUTTypeContent as String], inMode: .Import)
documentMenu.popoverPresentationController?.sourceView = self // UIView 
documentMenu.modalPresentationStyle = .popover
documentMenu.delegate = self
self.presentationContext.presentViewController(documentMenu, animated: true, completion: nil)
唐元凯
2023-03-14

问题是UIDocumentMenuViewController不希望显示为除了较小的"popover"表示样式以外的任何内容。它自己的实现将其modalPresentationStyle的任何设置重写为。Popover.所以您尝试将样式设置为。FormSheet最终被忽略。

这就是导致错误的原因。一旦样式为。Popover,你必须做什么错误的状态,并设置一些适当的组合源视图源RectbarButtonItem

向Apple提交增强请求,以支持其他模态演示样式。同时,您需要调整UI。

谷梁子濯
2023-03-14

下面的代码工作正常

let importMenu = UIDocumentMenuViewController(documentTypes: [String(kUTTypePDF)], in: .import)

    importMenu.popoverPresentationController?.sourceView = self.view // so that iPads won't crash

    importMenu.delegate = self
    importMenu.modalPresentationStyle = .formSheet
    self.present(importMenu, animated: true, completion: nil)
 类似资料:
  • 问题内容: 如何允许我在iOS 8.3 SDK中用Swift编写的通用应用程序在iPhone上仅支持纵向模式,而在iPad上既支持纵向模式又支持横向模式? 我知道过去这是在AppDelegate中完成的。我该如何在Swift中做到这一点? 问题答案: 您可以以编程方式进行操作,或者更好的是,您可以简单地编辑项目的Info.plist(这应该更实用,因为它是全局设备配置) 只需添加“支持的界面方向(

  • 我有一个应用程序可以完美地显示插页广告,但它们只是图像,作为一代以视频为生的人,我认为允许Admob也显示视频广告将是有益的。 我必须为此添加额外权限吗?或者我应该怎么做? 以下是我如何显示广告; 只有这两个权限; 广告显示得很好,但它们只是图像广告,我想要视频!!

  • 我无法在Webview中加载视频。 这是我的日志: 即使使用: 解决方案是什么?

  • 场景:用户点击视图控制器上的按钮。视图控制器是导航堆栈中的最顶层(显然)。tap调用在另一个类上调用的实用程序类方法。那里发生了一件坏事,我想在控件返回视图控制器之前在那里显示一个警报。 这在中是可能的(但可能不太合适)。 在这种情况下,您如何呈现一个,就在中?

  • 我有一个导航视图控制器,它会在操作时向选项卡栏视图控制器发送一个序列。因此,选项卡式视图控制器继承了导航栏。我正在尝试将标题应用于连接到选项卡栏视图控制器的其中一个视图控制器,但通过代码设置标题对我不起作用。有人知道为什么会这样吗? 这是我的故事板的图片: 带有注销按钮的视图控制器是我试图在导航条(代码)中设置标题的地方: 导航控制器中嵌入的视图控制器触发到选项卡栏控制器的顺序:

  • 以下的一段代码相当于定义一个ParameterizableViewController视图控制器的快捷方式,该控制器会立即将一个请求转发(forwards)给一个视图。请确保仅在以下情景下才使用这个类:当控制器除了将视图渲染到响应中外不需要执行任何逻辑时。 以下是一个例子,展示了如何在MVC Java编程配置方式下将所有"/"请求直接转发给名字为"home"的视图: @Configuration