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

时间:2014-05-05 12:50:49

标签: ios download nsurlconnection image-gallery qlpreviewcontroller

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

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

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

1 个答案:

答案 0 :(得分:2)

要显示支持QLPreviewController的任何文件,网址应该是    是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;
 }