尝试通过录制UIBarButtonItem进行共享时,iPad崩溃

时间:2016-08-28 09:37:13

标签: ios swift ipad uiactivityviewcontroller

我正在使用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 个答案:

答案 0 :(得分:0)

对于iPad以及popoverPresentationController的源视图,您还需要添加sourceRect。 请尝试以下方法:

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

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

    youActivityVC.popoverPresentationController.sourceRect = fromView.frame
}
}