2013-08-16 44 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]; 
} 

代碼是自我解釋。只需創建文檔目錄中所有文檔的數組。而在這之後使用陣列創建路徑,並提供網址路徑來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;