我在下面的代码中切换UIActivityViewController
@IBAction func shareButtonClicked(sender: UIButton)
{
let textToShare = "Text"
if let myWebsite = NSURL(string: "http://www.example.com/")
{
let objectsToShare = [textToShare, myWebsite]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
self.presentViewController(activityVC, animated: true, completion: nil)
}
}
但它在iPad上崩溃了。如何在Swift中以模态方式呈现它?
答案 0 :(得分:2)
它会崩溃,因为在iPad中你无法像iPhone一样呈现UIActivityViewController
。
您需要按照Apple建议的设计指南在弹出窗口中显示它。
以下代码将演示如何在UIPopoverPresentationController
中显示它。
@IBAction func shareButtonClicked(sender: UIButton)
{
let textToShare = "Text"
if let myWebsite = NSURL(string: "http://www.example.com/")
{
let objectsToShare = [textToShare, myWebsite]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
var nav = UINavigationController(rootViewController: activityVC)
nav.modalPresentationStyle = UIModalPresentationStyle.Popover
var popover = nav.popoverPresentationController as UIPopoverPresentationController!
activityVC.preferredContentSize = CGSizeMake(500,600)
popover.sourceView = self.view
popover.sourceRect = CGRectMake(100,100,0,0)
self.presentViewController(nav, animated: true, completion: nil)
}
}
注意:使用UIPopoverPresentationController
委托扩展您的视图控制器。
例如:
class MyViewController : UIViewController, UIPopoverPresentationControllerDelegate {
//........
}