我可以将 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

创建类似于新的 iOS 6 按钮共享的自定义共享视图

我可以将 UIImage 作为文本放在 textview 中,以便我可以在 ios 中将它们作为文本删除

Swift:我可以将 UIView 作为我可以创建/修改的参数传递吗?

我需要将一个 ifstream 传递给一个函数,这样我就可以将它添加到一个向量中

我可以将 Enum 扩展为 Enum.GetValues() 吗? [复制]