QLPreviewController有时不显示文档

时间:2013-11-18 17:06:37

标签: ios quicklook qlpreviewcontroller

我有一个主 - 详细信息应用程序,其中主人显示文档列表,详细信息显示这些文档的预览。

在故事板中,我绘制了一个名为 vistaPreview 的UIView。 我已经在.h:

宣布了它
@property (weak, nonatomic) IBOutlet UIView *vistaPreview;

我还宣布变量QLPreviewController* previewVC;将在.m

中使用

在.m中,我有一个方法,当用户触摸列表中的一个文档时调用该方法。该方法在视图vistaPreview中添加了一个QLPreviewController:

    previewVC = [[QLPreviewController alloc] init];
    previewVC.dataSource = self;
    previewVC.delegate = self;
    [self addChildViewController:previewVC];
    CGFloat w= self.vistaPreview.frame.size.width;
    CGFloat h= self.vistaPreview.frame.size.height;
    previewVC.view.frame = CGRectMake(0, 0,w, h);
    [self.vistaPreview addSubview:previewVC.view];
    [previewVC didMoveToParentViewController:self];

问题是,在多次单击列表中的某些文档后,我得到了下一个错误:

Domain=XPCObjectsErrorDomain Code=2 "The operation couldn’t be completed.

应用程序不会崩溃,我只在QLPreviewController视图中收到一条带有文档名称(而不是内容)的消息。当我点击列表中的另一个文档时,应用程序返回工作正常,显示文档内容。

有关如何修复的想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

问题是QLPreviewController孩子的数量。 那么,我寻找QLPreviewController子节点,并从parentViewController中删除它们。

NSArray *children = [self childViewControllers];
for (int i = 0; i<[children count]; i++) {
    NSString *classString = [NSString stringWithFormat:@"%@", [[children objectAtIndex:i] class]];
    if ([classString isEqualToString:@"QLPreviewController"]) {
        [[children objectAtIndex:i] removeFromParentViewController];
    }
}