Показать "Открыть в" для MS Word, Excel, PPT в ios target c

Есть ли какой-либо способ показать окно "Открыть с помощью" или "Открыть в" для офисных файлов MS? Я видел UIDocumentInteractionController и QuickLook Framework, но я не работал. Эти два действительно поддерживают офисные файлы?

2 ответа

Прежде всего, добавьте "QuickLook.framework" в ваш проект. Это часть iOS SDK-фреймворков. Получите имена всех файлов, присутствующих в каталоге документов, в listOfFilesPresentInDocumentDirectory NSArray, который определен как переменная класса.

NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString* documentDirectory = [documentDirectories objectAtIndex:0];
listOfFilesPresentInDocumentDirectory = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentDirectory error:NULL];

Создайте объект QLPreviewController, установите self в качестве источника данных, установите его currentPreviewItemIndex и поместите его в UINavigationController.

QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.dataSource = self;
previewController.currentPreviewItemIndex = indexPath.row;
[[self navigationController] pushViewController:previewController animated:YES];

Реализуйте протокол QLPreviewControllerDataSource в определении вашего класса и добавьте следующие две функции QLPreviewControllerDataSource в блок реализации вашего класса

знак прагмы - Методы QLPreviewControllerDataSource

- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller{
return [listOfFilesPresentInDocumentDirectory count];
}

- (id)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
 NSURL *fileURL = nil;
 NSString *fileName = [listOfFilesPresentInDocumentDirectory objectAtIndex:index];
NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);
NSString* documentDirectory = [documentDirectories objectAtIndex:0];
NSString *previewFileFullPath = [documentDirectory stringByAppendingPathComponent:fileName];
fileURL = [NSURL fileURLWithPath:previewFileFullPath];
return fileURL;

}

Быстрый просмотр должен работать

{
    QLPreviewController *previewer = [[QLPreviewController alloc] init];
    previewer.dataSource = datasource;
    previewer.currentPreviewItemIndex = 0; 
    NSURL *urlFilePath = [[NSBundle mainBundle] URLForResource:@"name" withExtension:@"pdf"];
    [self presentViewController:previewer animated:YES completion:nil];
}

-(NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{
    return 1;
}

  - (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
    return urlFilePath;
}

где urlFilePath - это путь к файлу.

Другие вопросы по тегам