gpt4 book ai didi

ios - addSubview 离线时不调用 QLPreviewControllerDataSource 实例

转载 作者:行者123 更新时间:2023-11-29 11:01:37 25 4
gpt4 key购买 nike

我有以下代码来添加一个 QLPreviewController subview

{
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 是一个 NSURL,它 位于 NSTemporaryDirectory - file://localhost//.../blah.pdf

我的问题是,当我的笔记本电脑连接到互联网时,文档显示为 subview ,但是当我的笔记本电脑未连接时,numberOfPreviewItemsInPreviewController & previewItemAtIndex 会不被调用。

  • 我试过一个带有简单 View Controller 的原始程序,它似乎运行良好。 (我的应用比那更复杂)。
  • 当我尝试将文档显示为模态视图时,无论模拟器是否连接到互联网,它似乎都能正常工作。[self presentViewController:preview animated:NO completion:nil]; --> 始终如一地工作。

我需要让 subview 在在线和离线模式下工作,如果有人能提供帮助就太好了!

最佳答案

您可能会遇到奇怪的行为,因为 QLPreviewController 的 View 未设计为嵌入到另一个 View 中。来自QLPreviewController class reference概述:

To display a Quick Look preview controller you have two options: You can push it into view using a UINavigationController object, or can present it modally, full screen, using the presentModalViewController:animated: method of its parent class, UIViewController.

话虽如此,您可以尝试:

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

  2. 强制 View “刷新”它的 subview :[self.view setNeedsLayout](实际上可能像第一个选项一样强制执行 reloadData)。

祝你好运!

关于ios - addSubview 离线时不调用 QLPreviewControllerDataSource 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15669472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com