2

我正在将 Xamarin monotouch c# 用于显示 PDF 文档的 iphone 应用程序。

我的问题是升级到 iOS 7 后,在 UIDocumentInteractionController 中退出 PDF 时出现黑屏。

在源构造函数中,我创建了一个新的 DocController:

this.DocumentPreview = new UIDocumentInteractionController();
this.DocumentPreview.Delegate = new DocumentInteractionDelegate(this.DidEndPreview);

当我选择一行时,我得到 PDF 并显示它(工作):

public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
{
    // Get PDF url from indexpath
    ...
    // Set url
    this.DocumentPreview.Url = url;
    this.DocumentPreview.PresentPreview(true);
    // Here i get a warning : Presenting view controllers on detached view controllers is discouraged
}

这是我的 DocControllerDelegate 类,在我的工作区中显示预览:

public class DocumentInteractionDelegate : UIDocumentInteractionControllerDelegate
{
    private Action DidEnd;

    public DocumentInteractionDelegate(Action didEnd)
    {
        this.DidEnd = didEnd;
    }

    public override UIViewController ViewControllerForPreview(UIDocumentInteractionController controller)
    {
        return AppDelegate.Instance.Workspace;
    }

    public override void DidEndPreview(UIDocumentInteractionController controller)
    {
        this.DidEnd.Execute();
    }
}

DidEnd 动作并不重要,因为当动作触发时黑屏已经存在。

是的,我已经设置了一个根控制器:

this.MainWindow.RootViewController = this.MainViewController;

我不知道 iOS6 中是否有警告,但我可以从我的 PDF 中恢复过来,然后在我的表格中选择另一个要显示的内容,现在在 iOS7中,单击 PDF 中的完成时出现黑屏。

如何在没有黑屏的情况下回到我的控制器,iOS7 中的哪些变化影响了这种行为?

谢谢

编辑

我已经设法摆脱了警告在分离的视图控制器上呈现视图控制器不鼓励在工作区 使用这个:

this.MainViewController.AddChildViewController(this.Workspace); 

但我仍然会在关闭 PDF 时进入黑屏。

4

1 回答 1

1

这就是我在 UIDocumentInteractionControllerDelegate 中所说的:

它将关闭该文档预览窗口并允许您返回到以前的视图控制器。

UIApplication.SharedApplication.Windows [0].RootViewController.DismissViewController (true,null);

尝试将您的文档交互控制器委托代码修改为:

public override UIViewController ViewControllerForPreview (UIDocumentInteractionController controller)
{

    return UIApplication.SharedApplication.Windows[0].RootViewController;
}
于 2013-10-03T15:03:57.373 回答