我做了一个UIPageViewController
多个UIViewController
。现在,我需要在UIView
中的顶部和底部添加一个固定的UIPageViewController
...
我的代码是:
- (void)viewDidLoad
{
[super viewDidLoad];
// Create it.
self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];
// Point the datasource back to this UIViewController.
self.pageController.dataSource = self;
// Assuming you have a SomePageViewController which extends UIViewController so you can do custom things.
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
if(!self.roteirosView)
self.roteirosView = [sb instantiateViewControllerWithIdentifier:@"RoteirosView"];
self.initialViewControllers = [NSArray arrayWithObject:self.roteirosView];
// animated:NO is important so the view just pops into existence.
// direction: doesn't matter because it's not animating in.
[self.pageController setViewControllers:self.initialViewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
// Tell the child view to get ready
[self.pageController willMoveToParentViewController:self];
// Actually add the child view controller
[self addChildViewController:self.pageController];
// Don't forget to add the new root view to the current view hierarchy!
[self.view addSubview:self.pageController.view];
// And make sure to activate!
[self.pageController didMoveToParentViewController:self];
}
- (void)viewDidLayoutSubviews {
}
- (UIViewController *)viewControllerAtIndex:(int)i {
// Asking for a page that is out of bounds??
if (i<0) {
return nil;
}
if (i>=MAX_PAGES) {
return nil;
}
// Assuming you have SomePageViewController.xib
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
if (i == 0) {
if(!self.roteirosView)
self.roteirosView = [sb instantiateViewControllerWithIdentifier:@"RoteirosView"];
return self.roteirosView;
}
else {
if(!self.pertoView)
self.pertoView = [sb instantiateViewControllerWithIdentifier:@"PertoView"];
return self.pertoView;
}
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
UIViewController *p = (UIViewController *)viewController;
if ([p isKindOfClass:[PertoViewController class]]) {
return [self viewControllerAtIndex:0];
}
else {
return [self viewControllerAtIndex:MAX_PAGES]; // permanece na mesma página
}
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
UIViewController *p = (UIViewController *)viewController;
if ([p isKindOfClass:[PertoViewController class]]) {
return [self viewControllerAtIndex:MAX_PAGES]; // permanece na mesma página
}
else {
return [self viewControllerAtIndex:1];
}
}
在我的UIStoryBoard
我有HomesViewController,它是我的UIPageViewController
,PertoViewController和RoteirosViewController。两个UIViewControllers
都添加UIPageViewController
。
答案 0 :(得分:0)
在UIPagerViewController类的viewDidAppear中添加你要添加的2个UIViews,这应该在2个视图控制器的已加载视图上添加新视图。
如果这对你没有用,请确保你也不是通过代码而不是故事板添加2视图控制器,并确保先添加它们然后添加2个视图标题和底部标题,以确保它们在屏
希望这个答案可以帮助你,祝你好运