使用UIDocumentPickerViewController,是否可以像Slack一样在首次打开时显示默认服务(Dropbox,Google Drive等)?

Vu *_*ran 22 objective-c drive ios icloud ios8

通常,UIDocumentPicker的行为是您呈现的,然后用户必须使用右上角的"位置"菜单在服务之间切换.默认情况下是否可以首先显示"Dropbox"或"Google Drive"?几乎就像我们"深入链接"到UIDocumentPicker服务一样.

似乎Slack App能够做到这一点以及MyMail应用程序,但我无法找到它的API.有任何想法吗?

Slack App

kei*_*r04 22

而不是使用UIDocumentPickerViewController,尝试使用UIDocumentMenuViewController.这是相关文档.

UIDocumentMenuViewController *documentProviderMenu =
[[UIDocumentMenuViewController alloc] initWithDocumentTypes:[self UTIs]
                                                     inMode:UIDocumentPickerModeImport];

documentProviderMenu.delegate = self;
[self presentViewController:documentProviderMenu animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

默认情况下,这将显示包含文档提供程序扩展的应用程序(如Dropbox,Google Drive,iCloud等).因此,如果用户在其设备上安装了Dropbox或Google Drive,则这些选项会自动显示.

您还可以通过调用addOptionWithTitle:image:order:handler:方法向菜单添加自定义选项.

  • 仅供参考:UIDocumentMenuViewController在iOS 11中已弃用 (6认同)
  • iOS 11中UIDocumentMenuViewController的任何替代方案?我真的需要提供实际的菜单,而不是去最近的位置,然后从那里去"地点"? (2认同)
  • 正如@ user1210182和@Bharath所说,似乎现在不推荐使用`UIDocumentMenuViewController`.但似乎也无法向`UIDocumentPickerViewController`添加自定义选项,例如访问本地文件或摄像头.我对吗?或者是否有一种方法将此功能添加到`UIDocumentPickerViewController`? (2认同)

Cal*_*tor 6

Swift代码示例:

let documentProvider = UIDocumentMenuViewController(documentTypes: ["public.image", "public.audio", "public.movie", "public.text", "public.item", "public.content", "public.source-code"], in: .import) 
documentProvider.delegate = self

self.present(documentProvider, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)