我正在使用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
崩溃。
有人知道如何解决它吗?
答案 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
}
}