Предупреждение: Несбалансированные вызовы для начала / конца переходов появления для QLRemotePreviewContentController
Я уже нашел несколько решений для этой проблемы (это вызвано тем, что все еще активная анимация).
Но я не могу решить эту проблему в моем приложении, когда использую UIDocumentInteractionController в приложении для iPad.
Мой ViewController выглядит так
MainViewController -> ContainerView
В этом ContainerView у меня есть боковая панель, и из этой боковой панели я хотел бы открыть 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
Есть идеи? заранее спасибо
3 ответа
Ваше приложение должно использовать навигационный контроллер. В этом случае контроллер навигации должен обрабатывать взаимодействие для предварительного просмотра, а не контроллер представления внутри него.
Замена вашего return self
Внутри documentInteractionControllerViewControllerForPreview
с self.navigationController
должен решить проблему. Тем не менее, вам нужно безопасно развернуть navigationController
, Смотрите полный метод ниже:
func documentInteractionControllerViewControllerForPreview(controller: UIDocumentInteractionController) -> UIViewController {
if let navigationController = self.navigationController {
return navigationController
} else {
return self
}
}
Престижность @staxim для решения Objective-C!
У меня была такая же проблема, и это оказалось проблемой с UINavigationController, на мой взгляд. Я обратился к этому, изменив documentInteractionControllerViewControllerForPreview
метод:
- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller
{
return [self navigationController];
}
Я думаю, что это потому, что переменная documentInteractionController
живет только в рамках openFile
функция. Как только функция выполнена, переменная является сборщиком мусора и, следовательно, невозможно зарегистрировать конечный переход появления.
Вы можете попытаться продвинуть локальную переменную, чтобы она стала переменной класса.