PdfView中的PdfDocument因目标C中无法识别的选择器实例而崩溃

时间:2018-11-20 17:12:51

标签: ios objective-c pdfview

我正在将Xcode 9.4与Objective C一起使用。 我想按照以下代码使用PDFView显示pdf文件

PDFView * pdfView = [[PDFView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
NSString* path = [[NSBundle mainBundle] pathForResource:@"abc" ofType:@"pdf"];
NSData* data = [NSData dataWithContentsOfFile:path];
PDFDocument *pdfDocument = [[PDFDocument alloc] initWithData:data];
[pdfView setDocument:pdfDocument];

但是由于SetDocument无法识别的选择器实例以及以下错误而失败。

错误:

-[PDFView setDocument:]:无法识别的选择器已发送到实例0x101367c40

错误:执行被中断,原因:试图取消引用无效的ObjC对象或向其发送无法识别的选择器。 该过程已返回到表达式求值之前的状态。

我无法确定确切的问题,请帮忙。

谢谢。

3 个答案:

答案 0 :(得分:1)

根据Apple的PDFView文档,有一个document属性保存PDF文档。不用调用setDocument,而是将document属性设置为您的pdfDocument变量。

答案 1 :(得分:1)

最后,

我找到了解决方案, 只需在情节提要中添加UIView,然后在Inspector中将类设置为PDFView。 并创建PDFView的IBOutlet对象,并将其分配给情节提要中的UIView,并将pdfdocument以及属性(如果需要)设置为PdfView。

代码:

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"Swift" ofType:@"pdf"]];
    PDFDocument *document = [[PDFDocument alloc]initWithURL:url];
    _pdfView.document = document;
    _pdfView.frame = self.view.frame;
    _pdfView.displayDirection = kPDFDisplayDirectionHorizontal;

感谢大家所做的宝贵努力。

答案 2 :(得分:1)

我遇到了同样的问题,对我来说,原因是另一个开发人员在我们的项目中添加了“ UIImage-PDF”窗格,该窗格还提供了一个名为PDFView的类,但界面不同。

在此处输入此答案,以防其他人与我有相同的根本原因。