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

Rit*_*ika 5 download image-gallery nsurlconnection ios qlpreviewcontroller

从QLPreviewController上的远程服务器加载文件时应使用什么方法?我们何时应该使用服务器API下载文件以将其加载到QLPreviewController上。我将QLPreviewController作为子视图添加到当前视图。我可以使用数据源方法来调用从服务器下载文件。

- (id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
Run Code Online (Sandbox Code Playgroud)

但是,一旦文件下载完毕,我需要重新加载QLPreviewController,该操作应在此处完成。对于图像,我想查看图库视图,以便滑动查看从服务器下载的图像。谁能指出我的任何教程来从远程服务器URL加载图像

Jay*_*ada 2

要显示任何支持 的文件QLPreviewController,url 应该是 fileURL。

(id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
Run Code Online (Sandbox Code Playgroud)

它总是返回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];

    }]; 
}
Run Code Online (Sandbox Code Playgroud)

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

 - (id)previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)idx {
     return self.fileURL;
 }
Run Code Online (Sandbox Code Playgroud)