3

我已经向我的 iOS 应用程序添加了一个共享扩展,并使用 UIViewController 创建了一个自定义 UI,而不是默认的 SLComposeServiceViewController。UI 工作正常,但我如何引用选择要共享的文件?例如,如果我在一张照片上点击分享,我如何引用该照片,并将其转换为 NSData。我目前有这段代码,但是当它运行时,数据似乎从未被初始化。我究竟做错了什么?

    //Runs when button is pressed
    inputItem = extensionContext!.inputItems.first as NSExtensionItem
    attachment = inputItem.attachments![0] as NSItemProvider
    attachment.loadItemForTypeIdentifier(kUTTypeJPEG as String,
        options: nil,
        completionHandler: {(content, error: NSError!) in
            let url = content as? NSURL
            if let data = NSKeyedArchiver.archivedDataWithRootObject(url!) as NSData?{
                self.imageChosen = UIImage(data: data)!
                //Never runs
            }
            else {
                //Always runs
            }

    })

另外,当所选附件包含多个文件(照片或视频)或无效文件类型时,如何使扩展按钮消失。任何答案表示赞赏。提前致谢。

4

1 回答 1

0

这就是我更喜欢共享图像和文件的方式:

//when the share button is pressed, default share phrase is added, cropped image of highscore is added

    var sharingItems = [AnyObject]()

    var shareButtonHighscore = NSUserDefaults.standardUserDefaults().objectForKey("highscore") as Int!

    sharingItems.append("I am sharing \(shareButtonHighscore)!")

    UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, false, 0);
    self.view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
    var image:UIImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    sharingItems.append(image)

    let activityViewController = UIActivityViewController(activityItems: sharingItems, applicationActivities: nil)

    activityViewController.excludedActivityTypes = [UIActivityTypeCopyToPasteboard,UIActivityTypeAirDrop,UIActivityTypeAddToReadingList,UIActivityTypeAssignToContact,UIActivityTypePostToTencentWeibo,UIActivityTypePostToVimeo,UIActivityTypePrint,UIActivityTypeSaveToCameraRoll,UIActivityTypePostToWeibo]

    self.presentViewController(activityViewController, animated: true, completion: nil)

希望这可以帮助!

于 2015-04-06T17:22:39.393 回答