单点触摸 – QLPreviewController问题

我正在尝试使用QLPreviewController来查看PDF文件并将其发送,但是在预览PDF文档后,操作button有问题。

当我按动作button(在右上angular)应用程序崩溃,我得到:“未处理的托pipe的exception:抛出的Objective-Cexception名称:NSInternalInconsistencyException原因:UIDocumentInteractionController:无效的scheme(null)。只支持文件scheme。 MonoTouch.Foundation.MonoTouchException)”

我做了一些研究,并且认为如果您从互联网下载文件或文件types不是“file:// ……….”,则可能会发生此问题。 我的NSUrl是这种格式,所以我不知道为什么我有这个错误。

有人有什么想法吗?

谢谢

这是我的代码来调用控制器:

QLPreviewController previewController= new QLPreviewController(); previewController.DataSource=new MyQLPreviewControllerDataSource(); this.PresentViewController(previewController,true, null); 

这是我的数据源代码:

 public class MyQLPreviewControllerDataSource : QLPreviewControllerDataSource { public override int PreviewItemCount (QLPreviewController controller) { return 1; } public override QLPreviewItem GetPreviewItem (QLPreviewController controller, int index) { string fileName = @"example.pdf"; var documents = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments); var library = Path.Combine (documents,fileName); NSUrl url = NSUrl.FromFilename (library); return new QlItem ("Title", url); } } 

这是我的项目的代码:

 public class QlItem : QLPreviewItem { string _title; Uri _uri; public QlItem (string title, Uri uri) { this._title = title; this._uri = uri; } public override string ItemTitle { get { return _title; } } public override NSUrl ItemUrl { get { return _uri; } } 

}

你的QlItem类将原始的NSUrl投射到Uri中,然后将其重新投射到NSUrl中,并且沿途有东西丢失。

它应该看起来更像是:

  public class QlItem : QLPreviewItem { string title; NSUrl uri; public QlItem(string title, NSUrl uri) { this.title = title; this.uri = uri; } public override string ItemTitle { get { return title; } } public override NSUrl ItemUrl { get { return uri; } } }