0

QLPreviewControllerを使用して、サーバーからリモートPDFをフェッチして表示しています。Appleはファイルのダウンロード中に素敵な「読み込み中」のグラフィックを組み込んだので、これは非常にうまく機能します。ここで、ローカルファイルを必要とするUIDocumentInteractionControllerも使用したいと思います。しかし、QLPreviewControllerはすでにファイルをダウンロードしているので、それを使用したいと思います。

QLPreviewControllerがダウンロードしたファイルへのローカルパスを取得する方法はありますか?

QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.dataSource = self;
previewController.delegate = self;
previewController.currentPreviewItemIndex = 0;
[[self navigationController] pushViewController:previewController animated:YES];
[previewController release];
// Where is the file stored?
4

2 に答える 2

4

表示されるファイルがリモートであるという同様のシナリオがありました。これが私たちがしたことです:私たちはデータソースをnilに設定しました。これは、読み込みアイコンを表示することです。viewDidLoadで、リモートリクエストを初期化し、ファイルをローカルに保存します。ファイルがダウンロードされたら、データソースを正しく設定し、ビューを更新します。

 //after file has been downloaded
 [self setDataSource:self];
 [self reloadData];
于 2013-01-29T17:06:49.320 に答える
1

QLPreviewController実際にはファイルをダウンロードするようには設計されていません-のドキュメントからQLPreviewItem

@property (readonly) NSURL *previewItemURL;

このプロパティは、クイックルックプレビューコントローラーがアイテムのURLを取得するために使用します。通常の使用では、プレビューアイテムクラスにgetterメソッドを実装して、この値を提供します。

このプロパティの値は、ファイルタイプのURLである必要があります。

したがって、ファイルをダウンロードするために実際に何か他のものを使用する必要があります。ネットワークリソースで動作する可能性がありますが、実際に動作するようには設計されていません。ファイルのURLを渡さないと、QuickLookControllerがエラーになると確信していたため、どのように管理しているかさえわかりません。コントローラは、ファイルを一時ディレクトリにダウンロードするか、メモリに直接ダウンロードする可能性があります。いずれにせよ、それはあなたが使用することはできません。

自分でファイルをダウンロードしてから、QuickLookコントローラーにそのファイルを指すファイルURLを渡す必要があります。ネットワークライブラリは、ASIHTTP使いやすくしたい場合と同じように使用できます。

于 2011-05-05T18:20:34.780 に答える