ben*_*r75 11 objective-c qlpreviewcontroller ios6
在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;
}
Run Code Online (Sandbox Code Playgroud)
这在iOS 5中完美运行,但在iOS 6中控制台输出:
Couldn't issue file extension for path: /XTAL/PDF_Instructions/Test_File.pdf
Run Code Online (Sandbox Code Playgroud)
您是否尝试过使用fileURLWithPath而不是URLWithString?通过这样做我还有其他问题.
还不确定QLPreviewController是否会处理远程URL.如果没有,您可以下载该文件,然后显示它.
我从远程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];
Run Code Online (Sandbox Code Playgroud)
为了显示Pdf:
QLPreviewController* preview = [[QLPreviewController alloc] init];
preview.dataSource = self;
[self presentModalViewController:preview animated:YES];
Run Code Online (Sandbox Code Playgroud)
QLPreviewController委托方法是:
- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
{
return 1;
}
- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{
return [NSURL fileURLWithPath:local_location];
}
Run Code Online (Sandbox Code Playgroud)