Показать "Открыть в" для 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 - это путь к файлу.