ios - Monotouch - QLPreviewController 问题

标签 ios mono xamarin.ios

我尝试使用 QLPreviewController 查看 PDF 文件并发送它,但预览 PDF 文档后操作按钮出现问题。

当我按下操作按钮(右上角)时,应用程序崩溃,我得到:“未处理的托管异常:抛出 Objective-C 异常。名称:NSInternalInconsistencyException 原因:UIDocumentInteractionController:无效方案(空)。只有文件方案是支持。(MonoTouch.Foundation.MonoTouchException)”

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

有人有什么想法吗?

谢谢

这是我调用 Controller 的代码:

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; } 
        } 
    }                

关于ios - Monotouch - QLPreviewController 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15258023/

相关文章:

ios - UINavigationBar 未出现

ios - CKRecord 获取返回 1 条 RecordID 为空的记录

ios - 创建一个不断扩大的圈子 iOS

c# - 使用Mono.cecil修改程序集后出现 "System.IO.FileNotFoundException"错误

c# - DataGridViewColumn.Frozen 单声道 2.10

mono - 获取密码字段的 Monotouch.Dialog InputElement

ios - 如何在将 UITabBarController 添加到应用程序后进行渲染?

Linux:如何使守护进程/服务可用于 xinetd?

dll - 我可以将我自己的 DLL 用于我的 Xamarin iOS 和 Android 项目吗?

ios - 单点触控/iOS : How to persentmodalview with transparent background