Вопрос

В моем приложении у меня есть rootviewcontroller (uipageviewcontroller), firstcontroller (uiviewcontroller) и второйконтроллер (uiviewcontrolller). Две виды внутри двух UIViewControllers прокручивают rootViewController .

в моем RootViewController.h:

@interface RootController : UIPageViewController <UIPageViewControllerDataSource, UIPageViewControllerDelegate>
.

Но когда я прокручиваю между разными представлениями, такие методы, как:

-(void) pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
.

не вызываются. Почему?Кто-нибудь может мне помочь?Заранее спасибо.

Это было полезно?

Решение

Вы назначали rootviewcontroller (какой бы контроллер / объект вы хотите получить вызовы делегатов), чтобы быть делегатом / DataSource of uipageViewController?

pageViewController.delegate = rootViewController;
pageViewController.dataSource = rootViewController;
.

Другие советы

В дополнение к очевидному решению выше, если вы столкнулись с этой проблемой, пожалуйста, рассмотрите возможность того, что сама страницаViewController не сохраняется.Ранее я допустил ошибку в более раннем этапе создания страницы PageViewController и добавляя его представление в виде подсчета, но не удерживая самого PageViewController.

Обязательно сохранить его либо, добавив его как ChildViewController или присвоение его к сильной собственности.

Как вы подключали страницу просмотреть выпуск делегата контроллера?Я думаю, что вы никогда не подключали ссылку делегата.

Странно иметь контроллер просмотра страницы - это собственный источник данных и делегат.Я никогда не пытался сделать это, как вы делаете, и не уверен, что это будет работать.Я всегда устанавливаю контроллер просмотра контейнера, который управляет контроллером просмотра страницы.С раскатками вы просто настроили вид контейнера в IB и подключите встроенную систему.Затем вы сделаете контроллер просмотра контейнера источником данных и / или делегата.

Просто провел некоторое время, пытаясь выяснить, почему дидфинишанимация не было вызвано.Мои делегаты были установлены правильно, но оказывается, что в Swift 3 функция идет такая:

func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool)
.

Уменьшить выше подчеркивание.Функция ниже не будет вызвана.

func pageViewController(pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool)
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top