明天一定要给自己加个鸡腿,表扬一下自己周日完成了任务
滑动式的使用UIPageCOntroller要分两步走,一步最外层控制整体UI以及上层segment数据,一步做内容专门用来显示数据.这里要注意,先请求完segment里面的数据,再去绘制UI.
- (UIPageViewController *)pageVC{
if (_pageVC) {
return _pageVC;
}
_pageVC = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:nil];
_pageVC.delegate = self;
_pageVC.dataSource = self;
#warning todo
UIViewController *firstVC = [self viewControllerAtIndex:0];
NSArray *viewControllers = [NSArray arrayWithObject:firstVC];
//
[_pageVC setViewControllers:viewControllers
direction:UIPageViewControllerNavigationDirectionReverse
animated:NO
completion:nil];
_pageVC.view.frame = (CGRect){0,0+SEGMENTHEIGHT ,K_SCREEN_WIDTH,K_SCREEN_HEIGHT-SEGMENTHEIGHT};
[self addChildViewController:_pageVC];
return _pageVC;
}
注意这个
仅仅是为了第一次跳到内容的时候就会执行相应网络请求,并不是指定这个能翻多少页.
#pragma mark -UIPageViewControllerDataSource
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSUInteger index = [self indexOfViewController:(HQWYSupplyListVC *)viewController];
if (index == NSNotFound) {
return nil;
}
index++;
if (index == [self.dataSource count]) {
return nil;
}
return [self viewControllerAtIndex:index];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSUInteger index = [self indexOfViewController:(HQWYSupplyListVC *)viewController];
if ((index == 0) || (index == NSNotFound)) {
return nil;
}
index--;
return [self viewControllerAtIndex:index];
}
- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished previousViewControllers:(NSArray<UIViewController *> *)previousViewControllers transitionCompleted:(BOOL)completed{
HQWYSupplyListVC *cateListVc = (HQWYSupplyListVC *)pageViewController.viewControllers[0];
[self.segment setSelectedSegmentIndex:cateListVc.index];
}
最外层的完;
内层的比较简单;执行网络请求绘制UI就完事.