Ios UIPageViewController以编程方式告知显示的页面

Ios UIPageViewController以编程方式告知显示的页面,ios,uipageviewcontroller,Ios,Uipageviewcontroller,有没有一种方法可以通过编程来判断某个页面何时显示在pageviewcontroller中?例如,我将其实例化如下: if (index == 0) { pageContentViewController = [storyboard instantiateViewControllerWithIdentifier:@"OnCampusTable"]; } else if (index == 1) { pageContentViewController

有没有一种方法可以通过编程来判断某个页面何时显示在pageviewcontroller中?例如,我将其实例化如下:

if (index == 0) {
        pageContentViewController = [storyboard instantiateViewControllerWithIdentifier:@"OnCampusTable"];
    }
    else if (index == 1) {
        pageContentViewController = [storyboard instantiateViewControllerWithIdentifier:@"OffCampusTable"];
    }
    else if (index == 2) {
        pageContentViewController = [storyboard instantiateViewControllerWithIdentifier:@"MyEventsTable"];
    }
我想在哪里写点东西

if (current page is "OnCampusTable") {
            method 1
        }
        else if (current page is "OffCampusTable") {
            method 2
        }
        else if (current page is "MyEventsTable") {
            method 3
        }

我尝试过使用索引,但由于页面加载和填充的方式,它实际上无法正常工作。我想尝试访问页面指示器(小圆圈)来获取页码,但是我不知道怎么做。

您可以使用委托方法
pageViewController:didFinishAnimating:PreviousViewController:transitionCompleted:
跟踪当前页面,然后根据页面执行一些方法。

我已经看到了一些解决方案,它们使用了一组ViewController,并且比较,但我不想保留一堆控制器(我从模型中动态生成它们),所以我找到了一个似乎可行的解决方案

基本上,我将一个属性指向数据源中方法前后的前一个和下一个控制器。在委托的didFinishAnimating调用中,我将新控制器与这些属性进行比较,以查看我们是向前还是向后移动。一个警告是,如果已经加载了控制器,则不会调用before和after,因此我根据didFinishAnimating的previousViewController的值重新分配属性

注意,我只在显示一个页面的情况下实现了这一点

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
    if (self.pageIndex > 0) {
        UIViewController *vc = [self genController:self.trackList[self.pageIndex - 1]];
        self.priorVC = vc;
        return vc;
    } else {
        self.priorVC = nil;
        return nil;
    }
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
    if (self.pageIndex < self.trackList.count - 1) {
        UIViewController *vc = [self genController:self.trackList[self.pageIndex + 1]];
        self.nextVC = vc;
        return vc;
    } else {
        self.nextVC = nil;
        return nil;
    }
}

- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray *)previousViewControllers transitionCompleted:(BOOL)completed
{
    if (finished && completed) {
        if (pageViewController.viewControllers.lastObject == self.priorVC) {
            NSLog(@"Back");
            self.pageIndex--;
            self.nextVC = previousViewControllers.lastObject;
        } else if (pageViewController.viewControllers.lastObject == self.nextVC) {
            NSLog(@"Forward");
            self.pageIndex++;
            self.priorVC = previousViewControllers.lastObject;
        }
        NSLog(@"Page: %ld",self.pageIndex);
    }
}
-(UIViewController*)页面视图控制器:(UIPageViewController*)页面视图控制器视图控制器预览控制器:(UIViewController*)视图控制器{
如果(self.pageIndex>0){
UIViewController*vc=[self-genController:self.trackList[self.pageIndex-1];
self.priorVC=vc;
返回vc;
}否则{
self.priorVC=nil;
返回零;
}
}
-(UIViewController*)pageViewController:(UIPageViewController*)pageViewController viewControllerAfterViewController:(UIViewController*)viewController{
if(self.pageIndex