문제

마스터가 문서 목록을 표시하고 세부 정보에 이러한 문서의 미리 보기가 표시되는 마스터-세부 앱이 있습니다.

스토리보드에 UIView를 그렸습니다. 비스타미리보기.나는 그것을 .h에 선언했습니다:

@property (weak, nonatomic) IBOutlet UIView *vistaPreview;

나는 또한 변수를 선언했습니다 QLPreviewController* previewVC; .m에서 사용

.m에는 사용자가 목록에 있는 문서 하나를 터치할 때 호출되는 메서드가 있습니다.이 메소드는 view 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 보기에 문서 이름(콘텐츠가 아님)이 포함된 메시지만 표시됩니다.목록에서 다른 문서를 클릭하면 앱이 다시 작동하여 문서 내용을 표시합니다.

문제를 해결하는 방법에 대한 아이디어가 있나요?

미리 감사드립니다!

도움이 되었습니까?

해결책

문제는 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];
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top