11

iOS 6 では、QLPreviewController は URL から PDF をロードしなくなりました。iOS 5 で正常に動作します。ここに記載されているように、QLPreviewControllerDataSource メソッドを実装しました。

#pragma mark - QLPreviewControllerDataSource
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller {
    return 1;
}

- (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index;
{
    NSURL *fileURL = [NSURL URLWithString:@"http://www.bliley.net/XTAL/PDF_Instructions/Test_File.pdf"];
    return fileURL;
}

これは iOS 5 では完全に機能しますが、iOS 6 ではコンソールに次のように出力されます。

Couldn't issue file extension for path: /XTAL/PDF_Instructions/Test_File.pdf
4

4 に答える 4

8

URLWithString の代わりに fileURLWithPath を使用してみましたか? そうすることで修正された他の問題がありました。

また、QLPreviewController がリモート URL を処理するかどうかもわかりません。そうでない場合は、ファイルをダウンロードしてから表示できます。

于 2012-10-08T15:11:47.310 に答える
7

リモート URL からファイルをダウンロードしてローカルに保存し、QLPreviewController を使用して PDF を表示します。iOS 6 では動作します。

最初に、次のコードを使用してリモート URL からファイルを保存しました。

    NSString *local_location;

    NSString *path = [[NSBundle mainBundle] pathForResource:@"sampleData" ofType:@"plist"];
        path = NSTemporaryDirectory();
    local_location= [path stringByAppendingPathComponent:[NSString stringWithFormat:@"My_Invoice.pdf"]];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString: remoteurl]];
        [request setDownloadDestinationPath:local_location];
        [request startSynchronous];

Pdf を表示する場合:

QLPreviewController* preview = [[QLPreviewController alloc] init];
        preview.dataSource = self;
        [self presentModalViewController:preview animated:YES];

QLPreviewController デリゲート メソッドは次のとおりです。

- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
{
    return 1;
}

- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{

    return [NSURL fileURLWithPath:local_location];


}
于 2012-12-13T13:05:57.247 に答える
4

私は同様の問題を抱えており、QLPreviewItemのファイルタイプURLのより厳密な施行に起因する可能性があるようです

@property (readonly) NSURL *previewItemURL;
Discussion
This property is used by a Quick Look preview controller to get an item’s URL. In typical use, you would implement a getter method in your preview item class to provide this value.

The value of this property must be a file-type URL.

If the item is not available for preview, this property’s getter method should return nil. In this case, the Quick Look preview controller displays a “loading” view.

Availability
Available in iOS 4.0 and later.
Declared In
QLPreviewItem.h

更新:私はiOS 6のこの問題を扱っているAppleのバグを開いたが、彼らはそれをバグとして受け入れたようで、近い将来修正を提供するかもしれない。私が開いたバグは、プレビューにカスタムNSURLProtocolsを使用することと関係がありましたが、他の側面にも当てはまる可能性があります。

クラスへのリンク

于 2012-10-09T15:23:12.190 に答える