Предупреждение: неуравновешенные вызовы для перехода к началу/концу отображения для QLRemotePreviewContentController
Я уже нашел некоторые решения для этой проблемы (вызвано тем, что все еще есть активная анимация).
Но я не могу решить это в своем приложении при использовании UIDocumentInteractionController в приложении iPad.
My ViewController выглядит как
MainViewController
- > ContainerView
В этом ContainerView у меня есть боковая панель, и из этого 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 секунд!), это предупреждение.
Изменить: обнаружено, что я могу быть проблемой с моим контейнером. Когда я включаю "ViewWillDissapear" и "ViewDidDisappear", плохо получим ошибку здесь:
view will dissappear
Unbalanced calls to begin/end appearance transitions for <QLRemotePreviewContentController: 0x7d35d400>
viww Did dissapaer
Любые идеи? Спасибо заранее
Ответы
Ответ 1
Ваше приложение должно использовать навигационный контроллер. Если это так, навигационный контроллер должен быть обработан для предварительного просмотра, а не для контроллера вида.
Замена return self
внутри documentInteractionControllerViewControllerForPreview
на self.navigationController
должна решить проблему. Однако вам необходимо безопасно распаковать navigationController
. См. Полный метод ниже:
func documentInteractionControllerViewControllerForPreview(controller: UIDocumentInteractionController) -> UIViewController {
if let navigationController = self.navigationController {
return navigationController
} else {
return self
}
}
Cudos to @staxim для решения Objective-C!
Ответ 2
У меня была такая же проблема, и это оказалось проблемой с UINavigationController моего представления. Я обратился к нему, изменив метод documentInteractionControllerViewControllerForPreview
:
- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller
{
return [self navigationController];
}
Ответ 3
Я думаю, что это потому, что переменная documentInteractionController
живет только в области openFile
. Как только функция будет выполнена, переменная будет собрана мусором, и, следовательно, невозможно зарегистрировать переход внешнего вида.
Вы можете попытаться повысить локальную переменную, чтобы стать переменной класса.