【问题标题】:UIPageViewController with multiple UIViewController with header and bottom barUIPageViewController 与多个 UIViewController 与标题和底栏
【发布时间】:2015-11-05 02:14:37
【问题描述】:

我做了一个UIPageViewController 和多个UIViewController。现在,我需要在UIPageViewController 的顶部和底部添加一个固定的UIView...

这是我的代码:

   - (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

【问题讨论】:

  • 到底是什么问题?
  • 我可以滚动和更改 UIViewControllers,但它具有屏幕大小...我需要在内容中添加这些 UIViewController 以显示我在 UIPageViewController 中拥有的顶部和底部 UIView

标签: ios objective-c iphone uitableview uiview


【解决方案1】:

在 UIPagerViewController 类的 viewDidAppear 中添加您要添加​​的 2 个 UIView,这应该在 2 个视图控制器中添加新视图而不是已加载的视图。

如果这对您不起作用,请确保您也通过代码而不是 Storyboard 中的代码添加 2 个视图控制器,并确保先添加它们,然后添加 2 个视图标题和底部一个以确保它们在屏幕上

希望这个答案可以帮助你,祝你好运

【讨论】:

  • 但是当我设置视图框架时,不起作用。视图区域总是添加到位置 0,0
  • @ladessa-ios 让我看看你是如何初始化视图的,请你用框架初始化它并给他们你想要的框架
  • 对不起,我又做了一遍,效果很好!非常感谢!
猜你喜欢
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 2013-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多