zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    项目发展规划 题解
    善意的投票&小M的作物 题解
    方格取数加强版 题解
    BZOJ1001 狼抓兔子 题解
    a
    一个搬运
    代码“小白”的温故而知新(一)-----OA管理系统
    工作流-----WorkFlow
    温习SQL语句
    浅谈MVC基础
  • 原文地址:https://www.cnblogs.com/fantasy3588/p/5338475.html
Copyright © 2011-2022 走看看