在 iPad 中呈现 UIActivityController 时应用程序崩溃

Posted

技术标签:

【中文标题】在 iPad 中呈现 UIActivityController 时应用程序崩溃【英文标题】:App crashes when presenting UIActivityController in iPad 【发布时间】:2019-12-28 09:23:53 【问题描述】:

我在我的应用程序中创建了一个视图,一旦单击按钮,UIActivityController 应该会在屏幕上弹出。但是,该应用程序仅在 iPad 上崩溃,但在 iPhone 上运行正常。任何人都知道这是什么行为以及如何解决它?这是我使用的代码:

@IBAction func send(_ sender: AnyObject)
        
    var image: UIImage!
    image = UIImage(named: "image.png")
    var urlfinal:NSURL!
    urlfinal =  URL.init(string:url as String)! as NSURL
    let items = [mytitle , image , urlfinal] as [Any]


    let controller = UIActivityViewController(activityItems: items, applicationActivities: .none)

    controller.popoverPresentationController?.barButtonItem = sender as? UIBarButtonItem

    self.present(controller, animated: true, completion: nil)

这是我得到的控制台错误:

由于未捕获的异常“NSGenericException”而终止应用,原因:“UIPopoverPresentationController () 应该在演示发生之前设置一个非零的 sourceView 或 barButtonItem。”

【问题讨论】:

controller.popoverPresentationController?.sourceView = self.view 将此添加到您的代码中 @iosArchitect.com 我在 xcode 中收到此错误消息 Cannot assign value of type 'UIBarButtonItem?' to type 'UIView?' 更新了评论。试试这个 @iOSArchitect.com 这对我有用controller.popoverPresentationController?.sourceView = sender as! UIView 【参考方案1】:

正如错误提示,您需要将 sourceView 添加到您的popoverPresentationController

controller.popoverPresentationController?.sourceView = sender as! UIView

【讨论】:

以上是关于在 iPad 中呈现 UIActivityController 时应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Xcode (iPad) 中更改模态视图的呈现和过渡样式

iPad 上的状态栏未按预期呈现

使用动画在 iPad 上呈现和隐藏​​弹出框

网站在 iOS6 中正常呈现,但在 iOS5 iPad 模拟器中翻倍

在 iPad 上将 UIView 作为矢量呈现为 PDF - 有时呈现为位图,有时呈现为矢量

Wikipedia 在 iPad 上以不同方式呈现 WkWebView 和 Safari