Положение UIPageViewController портится после установки новой страницы программно. Как исправить? - PullRequest
0 голосов
/ 23 мая 2019

Как обычно, я создаю массив UIViewController, а затем отображаю их через UIPageViewController. В своем классе управляющего контроллера я добавил метод для перехода непосредственно на страницу. Но после этого UIPageViewController показывает неправильную соседнюю страницу.

Я почти уверен, что это потому, что он делает неверное предположение: он начинается на странице; и если вы поместите на него новый контроллер и скажете, что направление движения направо, UIPageViewController предполагает, что предыдущий контроллер находится непосредственно слева.

Конечно, произойдет сбой, если вы начнете со страницы 0 и вставите контроллер для страницы 2 в PageViewController. Если вы проведете пальцем влево, вы снова увидите страницу 0, потому что UIPageViewController, похоже, кэшировал исходное представление как левое. Он никогда не вызывает своего делегата для «получения предыдущего контроллера представления», потому что думает, что он уже есть. Но стоит позвонить и получить страницу 1.

enter image description here Во всяком случае, это мое предположение, основанное на поведении и том факте, что мой делегат «получить предыдущий контроллер» никогда не вызывается, если я проведу пальцем влево после прыжка вправо. Так нужно ли мне делать последовательность нажатий, скажем, со страницы 0 на страницу 2?

У кого-нибудь есть лучший обходной путь или понимание? Спасибо!

1 Ответ

0 голосов
/ 23 мая 2019

Похоже, что эта теория верна, основываясь на понимании и обходном пути (который я проверил), представленном здесь: UIPageViewController viewControllerAfterViewController не вызывается после того, как однажды возвращено nil

...