2014-06-30 6 views
6

Я тестирую новый API UIDocumentPickerViewController в iOS 8. Я хочу просто открыть файл в iCloud, чтобы увидеть, как работает взаимодействие.UIDocumentPickerViewController - все файлы выделены серым цветом

Это код, который я бегу от моего UIViewController:

- (IBAction)openDocument:(id)sender { 
    [self showDocumentPickerInMode:UIDocumentPickerModeOpen]; 
} 

- (void)showDocumentPickerInMode:(UIDocumentPickerMode)mode { 
    UIDocumentPickerViewController *picker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[(NSString *)kUTTypeData] inMode:mode]; 

    picker.delegate = self; 

    [self presentViewController:picker animated:YES completion:nil]; 
} 

openDocument привязан к кнопке в IB. Когда я нажимаю на него, он открывает браузер iCloud, но каждая папка в нем неактивна (я создал некоторые файлы Keynote, Numbers и Pages), поэтому я не могу добраться до файлов:

Document Picker with files grayed out.

Я проверил некоторые документы и сделал следующее (без везения):

  • Enabled ICloud в моем приложении (в разделе возможностей, как для хранения ключей-значений и ICloud документов).
  • Добавлено УИП для public.data в моем Info.plist следующим образом:

    <key>CFBundleDocumentTypes</key> 
    

    CFBundleTypeIconFile icon.png CFBundleTypeName MyData CFBundleTypeRole просмотра LSItemContentTypes public.data LSTypeIsPackage NSDocumentClass Документ NSPersistentStoreTypeKey Binary

  • Добавлен NSUbiquitousContainerIsDocumentScopePublic ключ со значением YES к моей Info.plist.

Любая идея, что может быть неправильным или отсутствует?

+0

В вашем изображении не отображаются серые файлы. Что произойдет, если вы откроете папку (ы)? –

+0

Папка (и) выделена серым цветом, я не могу добраться до файлов. Просто добавил разъяснение. – pgb

+0

@pgbВы проверили с бета-версией 3? – karan

ответ

15

Документы iWork не соответствуют kUTTypeData, они соответствуют kUTTypePackage.

Однако в прошивкой 8 бета-3, я должен был использовать точный ИМП:

UIDocumentPickerViewController *picker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[@"com.apple.iwork.pages.pages", @"com.apple.iwork.numbers.numbers", @"com.apple.iwork.keynote.key"] inMode:mode]; 
+0

Кажется, что в бета-версии 4 также есть – Weaverfish

+0

Он также встречается в бета-версии 5 – arcticmatt

+0

Спасибо за ответ! Как вы узнали UTI о собственных приложениях Apple? Это где-то опубликовано? Еще раз спасибо! – Tarek

7
**Swift 3+ Solution** 

Откроет и обеспечить доступ ко всем пунктам привода.

//open document picker controller 

func openImportDocumentPicker() { 
    let documentPicker = UIDocumentPickerViewController(documentTypes: ["public.item"], in: .import) 
    documentPicker.delegate = self 
    documentPicker.modalPresentationStyle = .formSheet 
    self.present(documentPicker, animated: true, completion: { _ in }) 
} 
/* 
* 
* Handle Incoming File 
* 
*/ 

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) { 
    if controller.documentPickerMode == .import { 
     let alertMessage: String = "Successfully imported \(url.absoluteURL)" 
    } 
} 
/* 
* 
* Cancelled 
* 
*/ 

func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) { 
    print("Cancelled") 
} 
+0

Исправить. Спасибо! –

+0

Рад! Может помочь вам. –

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