iOS 6.0 QuickLook QLPreviewController 오류 : "로드 된 프록시의 미리보기 항목을 찾을 수 없습니다"

StackOverflow https://stackoverflow.com//questions/12712890

문제

My Application은 QLPreviewController를 사용하여 모든 유형의 파일과 iOS 5.x의 파일을 표시하는 것처럼 보였습니다.

iOS 6.0에서는 오류가 발생했으며 컨트롤러를 표시하지만 일정한로드 표시기가 있으며 실제로 아무 것도로드하지 않습니다.

로그의 오류는 다음과 같습니다. 로드 된 프록시에 대한 미리보기 항목을 찾을 수 없음 : - 파일 : //localhost/user/me/library/application%20support/iphone%20simulator/6.0/Applications/e6a58f8d-71f3-4c7a-b16e-4ba017e318e5/documents/temp//welcome.socx

iOS 6.0의 QuickLook과 함께 다른 사람이 또는 다른 문제가 있습니까?또는 무엇을 시도 할 것인가?나는 iPhone과 iPad를 통해 컨트롤러를 밀고 제시하는 것을 통해 그것을 시도했습니다.

편집 : 문제의 URL (그들이 말하는 것은 나쁜 것이라는 것)이 파일 : // 그러나 file : // localhost에만 시작되는 반면, 실제 경로로 시작한 원래 파일 (예 : 파일 :/// 사용자).

도움이 되었습니까?

해결책

잘 연구가 끝나고 기본 QuickLook Viewer를 작성한 후에도 오류가 계속 로그인되었음을 발견했지만 문서는 실제로 원래 프로젝트에서 발생하지 않았습니다. .

i 다음 QLPreviewController를 vavigationController 내에 넣고 동일한 문제로 끝나기 전에 QLPreviewController를 눌렀습니다. QLPreviewController를 UINAvigationController에 래핑 했으므로 NavigationItem을 사용자 정의 버튼을 지정하는 방법 이었기 때문입니다. 그것은 iOS 5.1에서 잘 작동했지만 (위에서 언급했듯이) 분명히 iOS 6.0이이를 좋아하지 않습니다.

UINAvigationController에서 QLPreviewController를 래핑 한 추가 코드를 제거하면 문서가 표시되는 것으로 보입니다.

포장 된 컨트롤러의 예 :

QLPreviewController* previewer = [[QLPreviewController alloc] init];
previewer.dataSource = self;
previewer.delegate = self;
[previewer setCurrentPreviewItemIndex:0];

UINavigationController* previewNavCtrl = [[UINavigationController alloc] init];
[previewNavCtrl pushViewController:previewer animated:NO];

[self presentModalViewController:previewNavCtrl animated:YES];
.

변경 :

QLPreviewController* previewer = [[QLPreviewController alloc] init];
previewer.dataSource = self;
previewer.delegate = self;
[previewer setCurrentPreviewItemIndex:0];

[self presentModalViewController:previewer animated:YES];
.

참고 : 다시 프록시 오류는 여전히 로그에 표시되지만

또한 : uibarbuttonItem 사용자 지정은 navigationController= /

없이 더 이상 작동하지 않는 것 같습니다.

update : previewItematIndex의 fileURL을 생성하도록 fileUrlWithPath를 사용하여 원래 오류가 멀리 떨어져 있습니다. 그러나 문서가로드되지 않는 곳에도 동일한 문제가 발생합니다.

새 오류 (다른 사람들이 보았던 다른 사람들도 보았습니다)는 다음과 같습니다.

경로에 대한 파일 확장명을 발행 할 수 없습니다. /users/me/library/application%20support/iphone%20simulator/6.0/applications/339ddf48-af93-41b5-b81e-a39440a131c6/documents/temp/welcome1.docx

최종 업데이트 : OK Extension 문제 / 오류는 [NSString stringByAddingPercentEscapesUsingEncoding]가 이미 처리되어야 할 때 공백 (generacododiceTagcode 등)을 수동으로 추가하려고했기 때문입니다. 내가 그것을 제거한 후에는이 일을했고 지금은 이제 iOS 6예요! 따라서 실제 문제는 UINAvigationController와 아무 관련이 없었지만 실제로 PreviewItematIndex를 통해 전달되는 파일 URL이

다른 팁

누군가와 같은 문제가있는 경우이 오래된 질문에 대답하려고 생각했습니다.

Xcode를 사용하여 앱을 디버깅 할 때 각각 응용 프로그램의 UUID가 변경 될 때마다. 그러나 앱이 장치에서로드되는 경우에 적용되지 않습니다.

예 : 동일한 앱에 대한 다음 경로가 있습니다.

문서 경로 : ///// var / mobile / applications / cbf533a7-c19A-4336-A92C-DC1A48242A8A / 문서 / 문서 경로 : /// var / mobile / 응용 프로그램 / ADB99D3B-EACA-482D-BB8A-0C12B340A044 / 문서 /

- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index

에 다음을 추가하여 극복 할 수 있습니다.
NSString *documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains( NSDocumentDirectory, NSUserDomainMask, YES ) objectAtIndex:0];
NSURL *localDocumentsDirectoryURL = [NSURL fileURLWithPath:documentsDirectoryPath];
NSURL *fileURL =  [localDocumentsDirectoryURL URLByAppendingPathComponent:fileName isDirectory:NO];
return fileURL;
.

* filename은 문서 폴더에서 찾을 수있는 파일 이름 (medoc.pdf)입니다.

원격 URL에서 파일을 다운로드하고 로컬로 저장 한 것으로, 그런 다음 QLPreviewController를 사용하여 PDF를 표시합니다. IOS 6 작업.

먼저 다음 코드를 사용하여 원격 URL에서 파일을 저장했습니다.

NSString *local_location;

    NSString *path = [[NSBundle mainBundle] pathForResource:@"sampleData" ofType:@"plist"];
        path = NSTemporaryDirectory();
    local_location= [path stringByAppendingPathComponent:[NSString stringWithFormat:@"My_Invoice.pdf"]];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:[NSURL URLWithString: remoteurl]];
        [request setDownloadDestinationPath:local_location];
        [request startSynchronous];


For showing the Pdf :



QLPreviewController* preview = [[QLPreviewController alloc] init];
        preview.dataSource = self;
        [self presentModalViewController:preview animated:YES];





QLPreviewController delegate methods are :




- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller
{
    return 1;
}

- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
{

    return [NSURL fileURLWithPath:local_location];


}
.

1)

nsmutableArray * samplePDF= [[nsmutablearray alloc] initwithObjects : @ "sam1.pdf", @ "sam2.pdf", @ "sam3.pdf", @ "sam4.pdf", nil];

// 강력한 textDocument 디렉토리에서 PDF 파일을 드래그합니다.

2)

QLPreviewController * previewController= [[QLPreviewController Alloc] init]; previewController.DataSource= 자아; previewController.currentPreviewItemIndex= [IndexPath 행]; [Self ArestModalViewController : PreviewController 애니메이션 : 예];

3) #pragma 마크 QLPreviewControllerDataSource

// 미리보기 컨트롤러가 미리 볼 수있는 항목 수를 반환합니다.

- (nsinteger) numberOfPreviewItemSinPreviewController : (QLPreviewController *) PreviewController {

return [samplepdf count];

}

// 미리보기 컨트롤러가 미리 볼 수있는 항목을 반환합니다.

- (ID) PreviewController : (QLPreviewController *) PreviewController PreviewItematIndex : (NSInteger) 색인 {

nsString * DocumentSdirectoryPath= [[nsbundle MainBundle] ResourcePath];

NSString *dataPath =[documentsDirectoryPath stringByAppendingPathComponent:[samplepdf objectAtIndex:index]];

NSURL *url = [NSURL fileURLWithPath:dataPath isDirectory:YES];  
return url;
.

}

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top