• UIPageViewController用法


    1.实例化控制器

    self.pageViewController = [[UIPageViewController alloc]initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];

        self.pageViewController.dataSource = self;

        self.pageViewController.delegate = self;

    2.设置子控制器

     // 勋章

        CLHonorCardViewController *cardVC = [[CLHonorCardViewController alloc] init];

        // 荣誉

        CLHonorViewController *honorVC = [[CLHonorViewController alloc] init];

        // 特权

        CLHonorPrivilegeViewController *privilegeVC = [[CLHonorPrivilegeViewController alloc] init];

        // 每日成绩

        CLHonorCoreViewController *coreVC = [[CLHonorCoreViewController alloc] init];

        

        self.subViewController = @[cardVC,honorVC,privilegeVC,coreVC];

        [self addChildViewController:self.pageViewController];

        [self.view addSubview:self.pageViewController.view];

     // 3.设置UIPageViewController的frame

     self.pageViewController.view.frame = CGRectMake(0, CGRectGetMaxY(self.selectTab.frame), LYRHomePageScreenW, LYRHomePageScreenH - CGRectGetMaxY(self.selectTab.frame));

        [self.pageViewController didMoveToParentViewController:self];

    // 4.设置默认的控制器

     [self.pageViewController setViewControllers:@[cardVC] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];

        self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;

    5.实现UIPageViewController的代理方法

    #pragma mark - UIPageViewControllerDataSource

    - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController

          viewControllerBeforeViewController:(UIViewController *)viewController {

        

        NSUInteger index = [self.subViewController indexOfObject:viewController];

        if (index == 0) {  // 注意点如果子控制器为0,则返回空

            return nil;

        }

        return self.subViewController[index - 1];  // 此处index必须减一

    }

    - (UIViewController *)pageViewController:(UIPageViewController *)pageViewController

           viewControllerAfterViewController:(UIViewController *)viewController {

        NSUInteger index = [self.subViewController indexOfObject:viewController];

        if (index >= self.subViewController.count - 1) {

            return nil;

        }

        return self.subViewController[index + 1];

    }

    #pragma mark UIPageViewControllDelegate

    - (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers

    {

        UIViewController* controller = [pendingViewControllers firstObject];

        self.nextIndex = [self.subViewController indexOfObject:controller];

    }

    - (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<UIViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed

    {

        if (completed) {

            

            [self.selectTab selectButtonAtIndex:self.nextIndex];

        }

    }

    1
  • 相关阅读:
    相关书籍下载2
    神奇的null和undefined
    相关书籍下载1
    微信小程序之for循环
    渐变(Gradients)
    模拟今日头条顶部导航菜单
    网格布局之相关特性
    网格布局之合并单元格
    网格布局
    Linux常用命令
  • 原文地址:https://www.cnblogs.com/fantasy3588/p/5338475.html
Copyright © 2020-2023  润新知