Начиная с iOS 6, я обнаружил, что свойство viewControllers
UIPageViewController постоянно обновляется, так что оно всегда будет содержать один контроллер представления, представляющий текущую страницу, и ничего больше.Таким образом, вы можете получить доступ к текущей странице, вызвав viewControllers[0]
(при условии, что вы одновременно показываете только один контроллер представления).
Массив viewController обновляется только после того, как страница «защелкивается», поэтому, если пользовательрешает частично раскрыть следующую страницу, она не становится "текущей" страницей, пока они не завершат переход.
Если вы хотите отслеживать «номера страниц», присвойте контроллерам представления индексное значение при их создании с помощью методов источника данных UIPageViewController.
Так, например:
-(void)autoAdvance
{
UIViewController *currentVC = self.viewControllers[0];
NSUInteger currentIndex = [myViewControllers indexOfObject:currentVC];
if ( currentIndex >= (myViewControllers.count-1) ) return;
[self setViewControllers:@[myViewControllers[ currentIndex+1 ]]
direction:UIPageViewControllerNavigationDirectionForward
animated:YES
completion:nil];
}
-(NSInteger)presentationIndexForPageViewController:
(UIPageViewController *)pageViewController
{
// return 0;
UIViewController *currentVC = self.viewControllers[0];
NSUInteger currentIndex = [myViewControllers indexOfObject:currentVC];
return currentIndex;
}
Но обратите внимание на комментарии , что это ненадежно.