尝试通过点击 UIBarButtonItem 进行共享时 iPad 崩溃

Posted

技术标签:

【中文标题】尝试通过点击 UIBarButtonItem 进行共享时 iPad 崩溃【英文标题】:iPad crashes when trying to share by taping a UIBarButtonItem 【发布时间】:2016-08-28 09:37:12 【问题描述】:

我正在使用 Xcode 和 Swift 开发 ios 应用程序。

我正在使用此代码通过录制 UIButton 来共享定义的字符串:

@IBAction func shareApp(sender: UIButton) 
    let textToShare = "Look at this:"

    if let myWebsite = NSURL(string: "www.example.con") 
        let objectsToShare = [textToShare, myWebsite]
        let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)

        if #available(iOS 8.0, *) 
            activityVC.popoverPresentationController?.sourceView = sender
         else 
            // Fallback on earlier versions
        
        self.presentViewController(activityVC, animated: true, completion: nil)
    

这在 iPhone 和 iPad 上运行良好。

现在,我想做同样的事情,但使用UIBarButtonItem 而不是UIButton。当然,此代码不适用于 UIBarButtonItem。

只要我点击 BarButtonItem,更改 @IBAction func shareApp(sender: AnyObject) activityVC.popoverPresentationController?.sourceView = sender as? UIView 就会导致 iPad's 崩溃。

有人知道怎么解决吗?

【问题讨论】:

【参考方案1】:

对于 iPad,除了 popoverPresentationController 的源视图之外,您还需要添加 sourceRect。 请尝试以下操作:

 if ( UIDevice.currentDevice().userInterfaceIdiom == .Pad) 

     if let fromView = sender as? UIView 
              youActivityVC.popoverPresentationController.sourceView = fromView

    youActivityVC.popoverPresentationController.sourceRect = fromView.frame


【讨论】:

我会检查并返回。 嗨@luckystars,很抱歉我的回复晚了。您的解决方案没有帮助。我更新了我的问题。请看一下。你能帮帮我吗?

以上是关于尝试通过点击 UIBarButtonItem 进行共享时 iPad 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

UIBarButtonItem 太宽 [重复]

如何用IB改变UIBarButtonItem的宽度

通过外观为 UIBarButtonItem 设置背景图像不适用于其他 UIControlStates

UIActivityViewController 将 sourceView 设置为 UIBarButtonItem

无法在 Xcode UI 测试中点击 UIBarButtonItem

仅在执行任务时隐藏 UIBarButtonItem