我有一个主 - 详细信息应用程序,其中主人显示文档列表,详细信息显示这些文档的预览。
在故事板中,我绘制了一个名为 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视图中收到一条带有文档名称(而不是内容)的消息。当我点击列表中的另一个文档时,应用程序返回工作正常,显示文档内容。
有关如何修复的想法吗?
提前致谢!
答案 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];
}
}