2015-04-06 3 views
2

Я добавил расширение для моего приложения iOS и создал пользовательский интерфейс с помощью UIViewController, а не SLComposeServiceViewController по умолчанию. Пользовательский интерфейс работает, но как я могу ссылаться на файлы, которые были выбраны для совместного использования? Например, если я нажму на фотографию, как я могу ссылаться на эту фотографию и преобразовать ее в NSData. У меня есть этот код, но когда он запускается, данные никогда не инициализируются. Что я делаю не так?iOS 8 Share Extension Attachments - Xcode - Swift

//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 
      } 

    }) 

Кроме того, как я делаю кнопку расширения исчезают, когда выбранное вложение содержит более одного файла (фото или видео), или недопустимый тип файла. Любой ответ приветствуется. Заранее спасибо.

+0

Что означает 'NSExtensionActivationRule' для этого расширения? –

ответ

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) 

Надеется, что это помогает!

+0

Ах, это для совместного использования в приложении, я считаю. Мне нужен способ, чтобы при нажатии на общий доступ к фотографии или файлу в вашей фотобиблиотеке или в Safari он ссылается на файл и преобразует его в NSData. Спасибо в любом случае, это может быть полезно для будущих игр, которые я сделаю. –

 Смежные вопросы

  • Нет связанных вопросов^_^