Предупреждение: Несбалансированные вызовы для начала / конца переходов появления для 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 функция. Как только функция выполнена, переменная является сборщиком мусора и, следовательно, невозможно зарегистрировать конечный переход появления.

Вы можете попытаться продвинуть локальную переменную, чтобы она стала переменной класса.

Другие вопросы по тегам