4

プロジェクトのバンドルから PDF ファイル システムを表示すると、QLPreviewController が動作します。

この例のように

しかし、ファイル システムから 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 を取得するにはどうすればよいですか?

ありがとう

ありがとう!

4

2 に答える 2

6

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 に提供します。

于 2013-08-16T05:08:52.880 に答える
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;
于 2014-09-04T06:02:03.243 に答える