【问题标题】:How to share different items for activities with UIActivityViewController?如何使用 UIActivityViewController 为活动共享不同的项目?
【发布时间】:2015-06-18 05:19:09
【问题描述】:

我需要为活动类型分享不同的项目。 对于 facebook:我必须分享:文本和网址。 但对于邮件:我必须分享文字、图片和网址。

我看到了很多问题,但没有一个回答我的问题。

下面是一段代码,我是怎么做的。

@IBAction func shareDetails(sender: AnyObject) {

    var activityItemsArray:[AnyObject] = [SharingProvider(source: detail)]
    if let urlString = dealer.websiteURL {
        if let url = NSURL(string:urlString) {
            activityItemsArray.append(url)
        }
    }

    let shareVC = UIActivityViewController(activityItems: activityItemsArray, applicationActivities: nil)
    shareVC.setValue("This is the Subject", forKey: "subject")

    shareVC.completionWithItemsHandler = { (activityType:String!, completed:Bool, returnedItems:[AnyObject]!, error:NSError!) -> Void in
        if !completed {
            return
        }
    }

    self.presentViewController(shareVC, animated: true, completion: nil)
}

我想根据activityType自定义activityItemArray。 任何帮助将不胜感激。 :)

【问题讨论】:

    标签: ios iphone swift


    【解决方案1】:

    方法是使用UIActivityViewController,例如以下方式:

    @IBAction func shareSheet(sender: AnyObject) {
    
    let firstActivityItem = "Text you want"
    let secondActivityItem : NSURL = NSURL(string: "http//:urlyouwant")!
    // If you want to put an image
    let image : UIImage = UIImage(named: "image.jpg")!
    
    let activityViewController : UIActivityViewController = UIActivityViewController(
        activityItems: [firstActivityItem, secondActivityItem, image], applicationActivities: nil)
    
    // This lines is for the popover you need to show in iPad 
    activityViewController.popoverPresentationController?.sourceView = (sender as! UIButton)
    
    // This line remove the arrow of the popover to show in iPad
    activityViewController.popoverPresentationController?.permittedArrowDirections = UIPopoverArrowDirection.allZeros
    activityViewController.popoverPresentationController?.sourceRect = CGRect(x: 150, y: 150, width: 0, height: 0)
    
    // Anything you want to exclude
    activityViewController.excludedActivityTypes = [
        UIActivityTypePostToWeibo,
        UIActivityTypePrint,
        UIActivityTypeAssignToContact,
        UIActivityTypeSaveToCameraRoll,
        UIActivityTypeAddToReadingList,
        UIActivityTypePostToFlickr,
        UIActivityTypePostToVimeo,
        UIActivityTypePostToTencentWeibo
    ]
    
    self.presentViewController(activityViewController, animated: true, completion: nil)
    }
    

    上述代码适用于 iPhone 和 iPad,因为您在 iOS 8 中设置了新的 popoverPresentationController,它也适用于 iPad。

    如果使用UIBarButtonItem,则需要替换此行:

    activityViewController.popoverPresentationController?.sourceView = (sender as! UIButton)
    

    有了这个:

    activityViewController.popoverPresentationController?.barButtonItem = (sender as! UIBarButtonItem)
    

    希望对你有所帮助。

    Source

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多