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 ()<UIPageViewControllerDataSource>
@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