Ios addSubview脱机时不调用QLPreviewController数据源实例

Ios addSubview脱机时不调用QLPreviewController数据源实例,ios,addsubview,qlpreviewcontroller,Ios,Addsubview,Qlpreviewcontroller,我有以下代码来添加qlviewcontroller子视图 { QLPreviewController *preview = [[QLPreviewController alloc] init]; preview.delegate = self; preview.dataSource = self; [self addChildViewController:preview]; [self.view addSubview:preview.view];

我有以下代码来添加
qlviewcontroller
子视图

{
    QLPreviewController *preview = [[QLPreviewController alloc] init];
    preview.delegate = self;
    preview.dataSource = self;
    [self addChildViewController:preview];
    [self.view addSubview:preview.view];
    [preview didMoveToParentViewController:self];
    self.previewController = preview;
}

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

-(id) previewController:(QLPreviewController *)previewController previewItemAtIndex:(NSInteger)index
{
    return self.url;
}
self.url
是位于NSTemporaryDirectory中的
NSURL-file://localhost//.../blah.pdf

我的问题是,当我的笔记本电脑连接到internet时,文档显示为子视图,但当我的笔记本电脑未连接时,
numberofpreviewWitemsinPreviewController
&
previewWitematindex
不会被调用

  • 我尝试了一个带有简单视图控制器的普通程序,它似乎工作得很好。(我的应用程序比这更复杂)
  • 当我尝试以模态视图的形式呈现文档时,无论模拟器是否连接到internet,它似乎都能工作。
    [自我呈现视图控制器:预览动画:无完成:无]-->工作一致

我需要得到在线和离线模式下工作的子视图,如果有人可以帮助,这将是伟大的

您可能会遇到奇怪的行为,因为QLPreviewController的视图没有设计为嵌入到另一个视图中。从概述中可以看出:

要显示快速预览控制器,您有两个选项:可以使用UINavigationController对象将其推入视图,也可以使用其父类UIViewController的presentModalViewController:animated:方法以模式全屏显示它

话虽如此,您可以尝试:

  • 强制QLPreviewController(重新)显示其内容。尝试添加
    [self.previewController reloadData]到第一个方法的末尾。这将强制触发数据源方法

  • 强制视图“刷新”其子视图:
    [self.view setNeedsLayout]
    (这实际上可能会像第一个选项一样强制重新加载数据)


  • 祝你好运

    谢谢!我不得不强迫ViewDid让它工作,这对我来说似乎很好。非常感谢。长期以来一直存在此问题,[self.previewController reloadData]对我非常有效。请尝试使用此链接对我有效