UIPageViewController: 20160907

UIPageViewController: 20160907

EssenceViewController.h


#import "BaseViewController.h"

@class SubMenuModel;
@interface EssenceViewController : BaseViewController

@property (nonatomic, strong)SubMenuModel *subModel;

@end


EssenceViewController.m



#import "EssenceViewController.h"
#import "EssenceTableViewController.h"
#import "MenuModel.h"
#import "NavTitleView.h"

@interface EssenceViewController ()

@property (nonatomic, strong)UIPageViewController *pageVC;

/*
 *  pageCtrl管理的所有视图控制器
 */
@property (nonatomic, strong)NSArray *vcArray;

@end

@implementation EssenceViewController

- (NSArray *)vcArray {
    if (nil == _vcArray) {
        /** 推荐*/
        EssenceTableViewController *recommendCtrl = [[EssenceTableViewController alloc] init];
        /** 视频*/
        UIViewController *videoCtrl = [[UIViewController alloc] init];
        videoCtrl.view.backgroundColor = [UIColor redColor];
        /** 图片*/
        UIViewController *picCtrl = [[UIViewController alloc] init];
        picCtrl.view.backgroundColor = [UIColor greenColor];
        
        _vcArray = @[recommendCtrl, videoCtrl, picCtrl];
    }
    
    return _vcArray;
}


//  subModel, 有什么用?
//设置导航标题
- (void)setSubModel:(SubMenuModel *)subModel {
    //  等同于 swift 的  计算属性 didSet

    _subModel = subModel;

    //显示导航上面的标题列表
    
    NSMutableArray *titles = [NSMutableArray array];
    for (NavTitleModel *tModel in subModel.submenus){
        [titles addObject:tModel.name];
    }
    
    
    __weak typeof(self) weakSelf = self;
    dispatch_async(dispatch_get_main_queue(), ^{
        NavTitleView *titleView = [[NavTitleView alloc] initWithTitles:titles rightImageName:@"navigationButtonRandomN_26x26_" rightHilightImageName:@"navigationButtonRandomClickN_26x26_"];
        [weakSelf.view addSubview:titleView];
        
        
        [titleView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.top.equalTo(weakSelf.view).offset(20);
            make.left.right.equalTo(weakSelf.view);
            make.height.mas_equalTo(44);
        }];
    });
    
    
    
    
    //review_post_nav_iconN_20x17_@2x
    //review_post_nav_icon_clickN_20x17_@2x
    
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    self.view.backgroundColor = [UIColor colorWithWhite:240.0/255.0 alpha:1.0];
    
    //导航管理的所有视图控制器navigationBar是共用一个
    //导航管理的所有视图控制器navigationItem都有自己的一个
    
    //自定制一个导航视图
    //隐藏系统的导航条
    self.navigationController.navigationBarHidden = YES;
    
    //显示横向滚动的界面
    UIPageViewController *pageVC = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
    
    //设置代理
    pageVC.dataSource = self;
    
    //设置视图控制器
    EssenceTableViewController *recommendCtrl = [self.vcArray firstObject];
    [pageVC setViewControllers:@[recommendCtrl] direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
    
    [self.view addSubview:pageVC.view];
    
    __weak typeof(self) weakSelf = self;
    [pageVC.view mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo(weakSelf.view).with.insets(UIEdgeInsetsMake(64, 0, 49, 0));
    }];
    
    self.pageVC = pageVC;

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

#pragma mark - UIPageViewController代理
//返回某个视图控制器后面的视图控制器
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
    
    NSInteger curIndex = [self.vcArray indexOfObject:viewController];
    if (curIndex < self.vcArray.count-1) {
        EssenceTableViewController *nextCtrl = self.vcArray[curIndex+1];
        return nextCtrl;
    }
    
    return nil;
}

//返回某个视图控制器前面的视图控制器
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
    
    NSInteger curIndex = [self.vcArray indexOfObject:viewController];
    if (curIndex > 0) {
        EssenceTableViewController *preCtrl = self.vcArray[curIndex-1];
        return preCtrl;
    }
    
    return nil;
}

@end


你可能感兴趣的:(UIPageViewController: 20160907)