UIActivity activityViewController在Swift的iPad上崩溃

时间:2015-02-27 07:05:12

标签: ios ipad swift uipopovercontroller uiactivityviewcontroller

我在下面的代码中切换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中以模态方式呈现它?

1 个答案:

答案 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 {
//........
}