iOS - Открытие PDF через Quicklook без использования UIScrollView - PullRequest
0 голосов
/ 28 апреля 2011

Я пытаюсь открыть PDF-файл через фреймворк QuickLook без использования UIScrollView ...

Мне кажется, я что-то упустил ...

Я считаю, что я ошибаюсь, когда мне нужно использовать QLPreviewController, а в QLPreviewController - это источник данных, который должен соответствовать QLPreviewItem. В документации говорится, что NSURL соответствует QLPriewItem, поэтому я устанавливаю preview.dataSource для NSURL, который выдает ошибку:

[NSURL numberOfPreviewItemsInPreviewController:]: нераспознанный селектор отправлен на экземпляр

Завершение приложения из-за необработанного исключения «NSInvalidArgumentException», причина: '- [NSURL numberOfPreviewItemsInPreviewController:]: нераспознанный селектор, отправленный экземпляру 0x5b5f200'

Что заставляет меня думать, что NSURL не соответствует.

весь код, который я считаю необходимым ...

- (BOOL)previewController:(QLPreviewController *)controller shouldOpenURL:(NSURL *)url forPreviewItem:(id <QLPreviewItem>)item {

    return YES;
}

- (NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller {

    return [documents count];
}

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

    return [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[documents objectAtIndex:index] ofType:nil]];
}

- (void)pushPDF {

    QLPreviewController *preview = [[QLPreviewController alloc] init];
    preview.dataSource = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"MCIT_Quiz" ofType:@"pdf"]];
    //preview.currentPreviewItemIndex = 0;
    [self presentModalViewController:preview animated:YES];
    [preview release];
}

Ответы [ 2 ]

2 голосов
/ 28 апреля 2011

В итоге я просто создал другой класс для хранения своих значений и использовал его в качестве источника данных, немного быстрый и грязный, но он работает.*

//
//  documentList.m
//

#import "DocumentList.h"

@implementation DocumentList

@synthesize documents;

-(void) createList {

    documents = [[NSArray arrayWithObjects:@"Quiz.pdf", nil] retain];
}

-(NSInteger) numberOfPreviewItemsInPreviewController: (QLPreviewController *) controller {

    return [documents count];
}

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

return [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:[documents objectAtIndex:index] ofType:nil]];
}

@end
1 голос
/ 28 апреля 2011

Ну, я не вижу, где NSURL соответствует QLPreviewControllerDataSource. Я думаю, что вы хотите

 preview.dataSource = self;

И тогда ваши уже написанные процедуры (numberOfPreviewItemsInPreviewController и previewController) вернут соответствующий NSURL (хотя не ясно, как «документы» заполняются.)

...