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
  • 相关阅读:
    (考研)散列表和hashcode和hashmap
    java基本数据类型和引用类型
    Java 中的语法糖(7/15整个周六上午总结)
    数据库第一天-数据库索引
    MonoBehaviour生命周期
    Unity基础知识
    SQLite3笔记
    cocos_js写文件
    UGUI_屏幕适配
    KMS算法
  • 原文地址:https://www.cnblogs.com/fantasy3588/p/5338475.html
Copyright © 2011-2022 走看看