我可以将 UIActivityViewController 添加到我的 ViewController 吗?
Posted
技术标签:
【中文标题】我可以将 UIActivityViewController 添加到我的 ViewController 吗?【英文标题】:Can I add UIActivityViewController to my ViewController? 【发布时间】:2019-05-21 07:19:26 【问题描述】:我正在开发与默认“照片”应用相同的照片共享按钮。
当我点击分享按钮时,它会作为子视图 (uiactivityviewcontroller/uiactivityviewcontroller.view) 添加到我的视图控制器中?
我的代码:
let text = "This is some text that I want to share."
// set up activity view controller
let textToShare = [ text ]
let activityViewController = UIActivityViewController(activityItems: textToShare, applicationActivities: nil)
// exclude some activity types from the list (optional)
//activityViewController.excludedActivityTypes = [ .airDrop,.postToFacebook ]
// present the view controller
if (UIDevice.current.userInterfaceIdiom == .phone)
self.containerView.addSubview(activityViewController.view)
else
activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash
self.present(activityViewController, animated: true, completion: nil)
但是这段代码给了我错误UIActivityViewController 只能以模态方式使用,或者在 iPad 上的弹出窗口中用作 contentViewController。
有没有更好的解决方案?
提前致谢。
【问题讨论】:
您的应用程序 rootVC 是否嵌入了 NavigationController? @karthikeyan 是的 raywenderlich.com/… 【参考方案1】:问题出在这一行:
self.containerView.addSubview(activityViewController.view)
这是非法的(在几个方面!)。您必须呈现活动视图控制器,如下所示:
self.present(activityViewController, animated: true)
【讨论】:
我知道。但在我的情况下,不存在 activityViewController 添加我的 UIViewController 与有问题的屏幕截图相同。 没有“在我的情况下”。只有一种方法可以使用活动视图控制器,我刚刚告诉过你它是什么。 我创建了与默认(iPhone 和 iPad)“照片”应用程序相同的共享按钮。 照片应用程序按我说的做。当您点击共享按钮时,它会调用present
,以显示活动视图控制器。你也必须这样做。争论没有意义!照我说的做,否则你会崩溃的。【参考方案2】:
根据文档,您应该以模态方式呈现活动控制器
系统提供多种标准服务,例如复制物品 到粘贴板、将内容发布到社交媒体网站、发送 通过电子邮件或短信等方式获取项目。应用程序还可以定义自定义 服务。您的应用负责配置、呈现和 解雇这个视图控制器。视图控制器的配置 涉及指定视图控制器所在的数据对象 应该行动。 (您还可以指定您的应用的自定义服务列表 支持。)当呈现视图控制器时,你必须这样做使用 当前设备的适当方式。在 iPad 上,您必须 在弹出窗口中显示视图控制器。 在 iPhone 和 iPod touch 上, 您必须以模态方式呈现它。
欲了解更多信息Click here
【讨论】:
和我说的一样。 你已经在我之前回答了,所以我分享了文档链接以上是关于我可以将 UIActivityViewController 添加到我的 ViewController 吗?的主要内容,如果未能解决你的问题,请参考以下文章
我在作为 UIDocumentInteractionController 和 UIActivityViewController 的一部分的 UIActivityGroupViewController
我可以将 UIImage 作为文本放在 textview 中,以便我可以在 ios 中将它们作为文本删除
Swift:我可以将 UIView 作为我可以创建/修改的参数传递吗?