ios – 警告:不平衡的调用开始/结束QLRemotePreviewContentController的显示转换

前端之家收集整理的这篇文章主要介绍了ios – 警告:不平衡的调用开始/结束QLRemotePreviewContentController的显示转换前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经找到了一些这个问题的解决方案(这是因为还有一个活动的动画).

但是当我在iPad应用程序中使用UIDocumentInteractionController时,我无法解决这个问题.

我的ViewController看起来像

MainViewController
– > ContainerView

在这个ContainerView我有一个Sidebar,从这个SideBar我想打开一个UIDocumentInteractionController.

我使用NSNotification,因为这个“MainViewController”应该处理来自不同视图的多个文件.

所以:(这是在我的MainViewController)

func openFile(notification: NSNotification){

    fileUrl = notification.object as NSURL

    var documentInteractionController = UIDocumentInteractionController(URL: self.fileUrl!)
    documentInteractionController.delegate = self

    documentInteractionController.presentPreviewAnimated(false)
}

func documentInteractionControllerViewControllerForPreview(controller: UIDocumentInteractionController) -> UIViewController {
    return self
}

但生病总会得到以下错误

警告:QLRemotePreviewContentController的不平衡调用开始/结束外观转换

我不知道为什么应该没有动画,如果我打开另一个(模态)窗口,这里没有警告.

如果我使用延迟(例如5秒!),则会出现此警告.

编辑:发现我可能是我的ContainerView的问题.当我包含“ViewWillDissapear”和“ViewDidDisappear”不正确的错误在这里:

view will dissappear

Unbalanced calls to begin/end appearance transitions for <QLRemotePreviewContentController: 0x7d35d400>

viww Did dissapaer

有任何想法吗?提前致谢

解决方法

您的应用程序必须使用导航控制器.如果是这样,导航控制器必须是处理预览的交互的导航控制器,而不是其中的视图控制器.

使用self.navigationController替换documentInteractionControllerViewControllerForPreview中的返回自身应该可以解决问题.但是,您需要安全地打开navigationController.请参阅下面的完整方法

func documentInteractionControllerViewControllerForPreview(controller: UIDocumentInteractionController) -> UIViewController {
    if let navigationController = self.navigationController {
        return navigationController
    } else {
        return self
    }
}

Cudos to @staxim为Objective-C解决方案!

猜你在找的iOS相关文章