2013-08-16 3 views
3

Я имею QLPreviewController работать, если я показываю PDF файловой системы из моей пачки по проекту,IOS QLPreviewController шоу PDF сохраняются в файловой системе

как этого example

, но если я хочу, чтобы показать PDF от файловая система, она не показывает его, как я могу вызвать файл pdf, который я только что загрузил в свою файловую систему?

Код:

- (void)initPDFviewer 
{ 
    QLPreviewController *previewController=[[QLPreviewController alloc]init]; 
    previewController.delegate=self; 
    previewController.dataSource=self; 
    [self presentModalViewController:previewController animated:YES]; 
    [previewController.navigationItem setRightBarButtonItem:nil]; 
} 

- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller 
{ 
    return 1; 
} 
- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index 
{ 
    //return 0; 


    //return url! 


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

    NSLog(@"paths :: %@", paths); 

    return 0; 

} 

Так что моя проблема заключается в том, чтобы получить PDF [только в формате PDF в каталоге документов], как я могу получить эту PDF?

спасибо

спасибо!

+0

Покажите свой соответствующий код для доступа к файлу и настройку 'QLPreviewController'. – rmaddy

+0

@rmaddy привет, спасибо, я поместил код, как вы видите, я не знаю, как получить документ, спасибо – MaKo

+0

У вас есть определенный PDF-файл в папке «Документы» или вам нужно найти один или несколько PDF-файлов в Папка документов во время выполнения? Если у вас есть определенный, то вы получите полный путь, выполнив что-то вроде: 'NSString * pdfPath = [paths [0] stringByAppendingPathComponent: @" sutff.pdf "];' – rmaddy

ответ

5

Измените свой метод init ниже.

-(id)init 
{ 
    if (self = [super init]) 
    { 
     // arrayOfDocuments = [[NSArray alloc] initWithObjects: 
     //   @"iOSDevTips.png", @"Remodel.xls", @"Core J2ME Technology.pdf", nil]; 

     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); 
     NSString *docPath = [paths lastObject]; 

     NSArray *docArray = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:docPath error:nil]; 

     arrayOfDocuments = [[NSArray alloc] initWithArray:docArray]; 
    } 
    return self; 
} 

Добавить этот новый метод

-(NSString*)documentDirectoryPathForResource:(NSString*)aFileName 
{ 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES); 
    NSString *fullPath = [[paths lastObject] stringByAppendingPathComponent:aFileName]; 
    return fullPath; 
} 

И заменить метод с моим методом

- (id <QLPreviewItem>)previewController: (QLPreviewController *)controller previewItemAtIndex:(NSInteger)index 
{ 
     // Break the path into it's components (filename and extension) 
     NSString *path = [self documentDirectoryPathForResource:arrayOfDocuments[index]]; 

     return [NSURL fileURLWithPath:path]; 
} 

Кодекс сам объяснительное. Просто создайте массив всех документов, которые находятся в вашем каталоге документов. И после этого использовать этот массив для создания пути и предоставить URL этого пути QLPreviewController

1
NSURL *fileURL = nil; 

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 

NSString *documentsDirectory = [paths objectAtIndex:0]; 

NSString *wordFilePath = [documentsDirectory stringByAppendingPathComponent:@"sample.doc"]; 

fileURL = [NSURL fileURLWithPath:wordFilePath]; 

return fileURL; 
Смежные вопросы