iOS QLPreviewController从远程服务器URL加载文件

在QLPreviewController上从远程服务器加载文件时应该使用什么方法?

我们何时应该使用我的服务器API下载文件以在QLPreviewController上加载它们.

我将QLPreviewController作为子视图添加到我当前的视图中.

我可以使用datasource方法从服务器调用下载文件.

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

但是一旦下载文件,我需要重新加载QLPreviewController,这应该在那里完成
对于图像我想图像库视图,以便滑动以查看从服务器下载的图像.
任何人都可以指向我从远程服务器URL加载图像的任何教程

最佳答案 要显示支持QLPreviewController的任何文件,url应该

   是fileURL.

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

它总是返回fileURL – 如果你将使用任何其他URL,它将崩溃.下载结束后将文件保存在文档目录中,然后按下进行预览.

- (void)saveFileInDocDirectoryWithFileName:(NSString *)title{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *docPath_ = [paths objectAtIndex:0];
    NSString *filePath = [ docPath_ stringByAppendingPathComponent:title];

    self.fileURL = [NSURL fileURLWithPath:filePath];
        [self pushToPreViewWithURL:fileURL];
}


- (void)pushToPreViewWithURL:(NSURL *)filePathURL{     
    QLPreviewController *previewController = [[QLPreviewController alloc] init];
    previewController.dataSource = self;
    previewController.delegate = self;
    // start previewing the document at the current section index

    [[NSOperationQueue mainQueue] addOperationWithBlock:^{

        [self.navigationController pushViewController:previewController animated:YES];

    }]; 
}

然后在委托方法中,返回fileURL:

 - (id)previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)idx {
     return self.fileURL;
 }
点赞