QLPreviewController의 뷰를 서브 뷰로 추가하려고합니다 (아니오 - 탐색 컨트롤러 또는 모달을 사용할 수 없음). QLPreviewController의 패브릭 배경 만 보여줍니다.서브 뷰로 QLPreviewController를 추가해도 PDF가로드되지 않습니다.
나는 하나를 만들고 하위 뷰로 추가 :
QLPreviewController* preview = [[[QLPreviewController alloc] init] autorelease];
preview.dataSource = self;
preview.delegate = self;
preview.view.frame = CGRectMake(0, 0, self.pdfPreviewView.frame.size.width, self.pdfPreviewView.frame.size.height);
self.pdfPreviewView.previewController = preview;
[self.pdfPreviewView addSubview:preview.view];
[preview reloadData];
내 QLPreviewControllerDataSource 방법은 (한 번에보기 1 PDF) 잘 작동 :
이- (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index
{
NSString *path = [[ResourceManager defaultManager] pathForPDF:self.currentPDF];
NSURL *url = [NSURL fileURLWithPath:path];
if ([QLPreviewController canPreviewItem:url]) {
return url; // This always returns
}
return nil; // This line is never executed
}
- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
{
return 1;
}
데이터 소스 방법은 항상 파일을 반환 URL 및 QLPreviewController는 파일을 열 수 있다고 말했지만 실제로는 그렇지 않습니다. 나는 배경을 얻는다. self.currentPDF
은 QLPreviewController를 생성하기 전에 설정되며 올바른 정보 (CoreData에서)를 포함합니다.
대리자 메서드가 호출되지 않습니다. 그러나 표준 방식으로도 사용하지 않기 때문에 전혀 예상치 못한 것은 아닙니다.
또한 [preview setNeedsLayout]
, [preview setNeedsDisplay']
및 [preview refreshCurrentPreviewItem]
을 호출했지만 데이터 소스 메서드를 호출하고 아무 것도 변경하지 않았습니다.
PDF는 유효합니다. Xcode와 Preview 모두에서 열 수 있으므로 문제는 아닙니다. 나는 이것이 왜 효과가 없을지에 대해 다소 혼란 스럽다. 이 도움이되는 데 도움이 될 것입니다.
안녕하세요, QLPreviewController 버튼을 "일반"navigationItem 장소가 아닌 다른 장소에 배치하는 방법을 얻었습니까? – dulgan