Ios 为什么我的方法调用两次?

Ios 为什么我的方法调用两次?,ios,objective-c,uipageviewcontroller,Ios,Objective C,Uipageviewcontroller,我在我的页面视图控制器类中有一个方法,它意味着一次生成一组数字,但由于某种原因它似乎触发了两次?有人能告诉我为什么它发射了两次吗 这是控制台激发的 发生了什么,为什么它不能正常工作 我希望我的页面视图控制器在用户向前滚动时循环,而我有五个不同的数字,它们在同一时间不断上升,但不循环,它们只是无限增加 向后滑动法 -(UIViewController *)pageViewController:(UIPageViewController *)pageViewController view

我在我的页面视图控制器类中有一个方法,它意味着一次生成一组数字,但由于某种原因它似乎触发了两次?有人能告诉我为什么它发射了两次吗

这是控制台激发的

发生了什么,为什么它不能正常工作

我希望我的页面视图控制器在用户向前滚动时循环,而我有五个不同的数字,它们在同一时间不断上升,但不循环,它们只是无限增加

向后滑动法

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController
     viewControllerBeforeViewController:(UIViewController *)viewController
{
   NSUInteger currentIndex = [myViewControllers indexOfObject:viewController];


    swipeTotal = swipeTotal - 1;



    if (swipeTotal > 4) {
        firstFive = true;
        //   NSLog(@"First Five Passed");
    }else{
        firstFive = false;
        //  NSLog(@"First Five False");
    }

    // NSLog(@"Swipe Total is %d",swipeTotal);

    if (currentIndex == 0) {
        swipeContent1 = swipeTotal;
        swipeContent2 = swipeTotal + 1;
        swipeContent3 = swipeTotal + 2;
        swipeContent4 = swipeTotal - 2;
        swipeContent5 = swipeTotal - 1;
    }
    if (currentIndex == 1) {
        swipeContent1 = swipeTotal - 1;
        swipeContent2 = swipeTotal;
        swipeContent3 = swipeTotal + 1;
        swipeContent4 = swipeTotal + 2;
        swipeContent5 = swipeTotal - 2;
    }
    if (currentIndex == 2) {
        swipeContent1 = swipeTotal - 2;
        swipeContent2 = swipeTotal - 1;
        swipeContent3 = swipeTotal;
        swipeContent4 = swipeTotal + 1;
        swipeContent5 = swipeTotal + 2;
    }
    if (currentIndex == 3) {
        swipeContent1 = swipeTotal + 2;
        swipeContent2 = swipeTotal - 2;
        swipeContent3 = swipeTotal - 1;
        swipeContent4 = swipeTotal;
        swipeContent5 = swipeTotal + 1;
    }
    if (currentIndex == 4) {
        swipeContent1 = swipeTotal + 1;
        swipeContent2 = swipeTotal + 2;
        swipeContent3 = swipeTotal - 2;
        swipeContent4 = swipeTotal - 1;
        swipeContent5 = swipeTotal;
    }

    if (firstFive == true) {


    if (currentIndex == 0) {
        currentIndex = 4;

    }else{
        --currentIndex;
        currentIndex = currentIndex % (myViewControllers.count);
    }

    }else{
        if (currentIndex > 0)
        {
            return [myViewControllers objectAtIndex:currentIndex-1];
            // return the previous viewcontroller
        } else
        {
            return nil;
            // do nothing
        }

    }


     /*
        content1 = [users objectAtIndex:swipeContent1];
        content2 = [users objectAtIndex:swipeContent2];
        content3 = [users objectAtIndex:swipeContent3];
        content4 = [users objectAtIndex:swipeContent4];
        content5 = [users objectAtIndex:swipeContent5]; */

    NSLog(@"Content 1 = %d",swipeContent1);
    NSLog(@"Content 2 = %d",swipeContent2);
    NSLog(@"Content 3 = %d",swipeContent3);
    NSLog(@"Content 4 = %d",swipeContent4);
    NSLog(@"Content 5 = %d",swipeContent5);




    return [myViewControllers objectAtIndex:currentIndex];
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController
      viewControllerAfterViewController:(UIViewController *)viewController
{
    NSUInteger currentIndex = [myViewControllers indexOfObject:viewController];


    if (swipeTotal > 4) {
        firstFive = true;

        //      NSLog(@"First Five Passed");
    }else{
        firstFive = false;
        //     NSLog(@"First Five False");
    }

    //  NSLog(@"Swipe Total is %d",swipeTotal);

    ++currentIndex;
    currentIndex = currentIndex % (myViewControllers.count);

    swipeTotal = swipeTotal + 1;

    if (currentIndex == 0) {
        swipeContent1 = swipeTotal;
        swipeContent2 = swipeTotal + 1;
        swipeContent3 = swipeTotal + 2;
        swipeContent4 = swipeTotal - 2;
        swipeContent5 = swipeTotal - 1;
    } else if (currentIndex == 1) {
        swipeContent1 = swipeTotal - 1;
        swipeContent2 = swipeTotal;
        swipeContent3 = swipeTotal + 1;
        swipeContent4 = swipeTotal + 2;
        swipeContent5 = swipeTotal - 2;
    } else if (currentIndex == 2) {
        swipeContent1 = swipeTotal - 2;
        swipeContent2 = swipeTotal - 1;
        swipeContent3 = swipeTotal;
        swipeContent4 = swipeTotal + 1;
        swipeContent5 = swipeTotal + 2;
    } else if (currentIndex == 3) {
        swipeContent1 = swipeTotal + 2;
        swipeContent2 = swipeTotal - 2;
        swipeContent3 = swipeTotal - 1;
        swipeContent4 = swipeTotal;
        swipeContent5 = swipeTotal + 1;
    } else if (currentIndex == 4) {
        swipeContent1 = swipeTotal + 1;
        swipeContent2 = swipeTotal + 2;
        swipeContent3 = swipeTotal - 2;
        swipeContent4 = swipeTotal - 1;
        swipeContent5 = swipeTotal;
    }

    NSLog(@"Content 1 = %d",swipeContent1);
    NSLog(@"Content 2 = %d",swipeContent2);
    NSLog(@"Content 3 = %d",swipeContent3);
    NSLog(@"Content 4 = %d",swipeContent4);
    NSLog(@"Content 5 = %d",swipeContent5);


    return [myViewControllers objectAtIndex:currentIndex];
}
向前滑动法

-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController
     viewControllerBeforeViewController:(UIViewController *)viewController
{
   NSUInteger currentIndex = [myViewControllers indexOfObject:viewController];


    swipeTotal = swipeTotal - 1;



    if (swipeTotal > 4) {
        firstFive = true;
        //   NSLog(@"First Five Passed");
    }else{
        firstFive = false;
        //  NSLog(@"First Five False");
    }

    // NSLog(@"Swipe Total is %d",swipeTotal);

    if (currentIndex == 0) {
        swipeContent1 = swipeTotal;
        swipeContent2 = swipeTotal + 1;
        swipeContent3 = swipeTotal + 2;
        swipeContent4 = swipeTotal - 2;
        swipeContent5 = swipeTotal - 1;
    }
    if (currentIndex == 1) {
        swipeContent1 = swipeTotal - 1;
        swipeContent2 = swipeTotal;
        swipeContent3 = swipeTotal + 1;
        swipeContent4 = swipeTotal + 2;
        swipeContent5 = swipeTotal - 2;
    }
    if (currentIndex == 2) {
        swipeContent1 = swipeTotal - 2;
        swipeContent2 = swipeTotal - 1;
        swipeContent3 = swipeTotal;
        swipeContent4 = swipeTotal + 1;
        swipeContent5 = swipeTotal + 2;
    }
    if (currentIndex == 3) {
        swipeContent1 = swipeTotal + 2;
        swipeContent2 = swipeTotal - 2;
        swipeContent3 = swipeTotal - 1;
        swipeContent4 = swipeTotal;
        swipeContent5 = swipeTotal + 1;
    }
    if (currentIndex == 4) {
        swipeContent1 = swipeTotal + 1;
        swipeContent2 = swipeTotal + 2;
        swipeContent3 = swipeTotal - 2;
        swipeContent4 = swipeTotal - 1;
        swipeContent5 = swipeTotal;
    }

    if (firstFive == true) {


    if (currentIndex == 0) {
        currentIndex = 4;

    }else{
        --currentIndex;
        currentIndex = currentIndex % (myViewControllers.count);
    }

    }else{
        if (currentIndex > 0)
        {
            return [myViewControllers objectAtIndex:currentIndex-1];
            // return the previous viewcontroller
        } else
        {
            return nil;
            // do nothing
        }

    }


     /*
        content1 = [users objectAtIndex:swipeContent1];
        content2 = [users objectAtIndex:swipeContent2];
        content3 = [users objectAtIndex:swipeContent3];
        content4 = [users objectAtIndex:swipeContent4];
        content5 = [users objectAtIndex:swipeContent5]; */

    NSLog(@"Content 1 = %d",swipeContent1);
    NSLog(@"Content 2 = %d",swipeContent2);
    NSLog(@"Content 3 = %d",swipeContent3);
    NSLog(@"Content 4 = %d",swipeContent4);
    NSLog(@"Content 5 = %d",swipeContent5);




    return [myViewControllers objectAtIndex:currentIndex];
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController
      viewControllerAfterViewController:(UIViewController *)viewController
{
    NSUInteger currentIndex = [myViewControllers indexOfObject:viewController];


    if (swipeTotal > 4) {
        firstFive = true;

        //      NSLog(@"First Five Passed");
    }else{
        firstFive = false;
        //     NSLog(@"First Five False");
    }

    //  NSLog(@"Swipe Total is %d",swipeTotal);

    ++currentIndex;
    currentIndex = currentIndex % (myViewControllers.count);

    swipeTotal = swipeTotal + 1;

    if (currentIndex == 0) {
        swipeContent1 = swipeTotal;
        swipeContent2 = swipeTotal + 1;
        swipeContent3 = swipeTotal + 2;
        swipeContent4 = swipeTotal - 2;
        swipeContent5 = swipeTotal - 1;
    } else if (currentIndex == 1) {
        swipeContent1 = swipeTotal - 1;
        swipeContent2 = swipeTotal;
        swipeContent3 = swipeTotal + 1;
        swipeContent4 = swipeTotal + 2;
        swipeContent5 = swipeTotal - 2;
    } else if (currentIndex == 2) {
        swipeContent1 = swipeTotal - 2;
        swipeContent2 = swipeTotal - 1;
        swipeContent3 = swipeTotal;
        swipeContent4 = swipeTotal + 1;
        swipeContent5 = swipeTotal + 2;
    } else if (currentIndex == 3) {
        swipeContent1 = swipeTotal + 2;
        swipeContent2 = swipeTotal - 2;
        swipeContent3 = swipeTotal - 1;
        swipeContent4 = swipeTotal;
        swipeContent5 = swipeTotal + 1;
    } else if (currentIndex == 4) {
        swipeContent1 = swipeTotal + 1;
        swipeContent2 = swipeTotal + 2;
        swipeContent3 = swipeTotal - 2;
        swipeContent4 = swipeTotal - 1;
        swipeContent5 = swipeTotal;
    }

    NSLog(@"Content 1 = %d",swipeContent1);
    NSLog(@"Content 2 = %d",swipeContent2);
    NSLog(@"Content 3 = %d",swipeContent3);
    NSLog(@"Content 4 = %d",swipeContent4);
    NSLog(@"Content 5 = %d",swipeContent5);


    return [myViewControllers objectAtIndex:currentIndex];
}

我认为您的
UIPageViewController
需要3个控制器(通常)才能正确显示其内容:

  • 主可视控制器
  • 前一个
  • 下一个
  • 当您滚动控制器时,上一个和下一个部分可见


    因此,这两种方法不会分别针对滑动方向调用,而是在每次滚动控制器时调用。因此,您的刷卡内容将被评估两次。

    为这两个方法添加一个断点,然后查看调用它们的内容。