2

我正在尝试在我的项目中实现页面滚动功能。我为 iOS 5 开发,带有故事板(和 ARC)。这就是我在故事板中所做的:

在此处输入图像描述

第一个 viewController(在左边)有一个 scrollView 和一个 pageControl。它的类被称为GlobalDashboardViewController,并继承自类DashboardViewController(继承自UIViewController)。其他 2 个控制器是带有标识符(MainDashboardSecondaryDashboard)的简单 UIViewControllers。

GlobalDashboardViewController.m中,只有一个 viewDidLoad,它获取 childViewControllers :

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self addChildViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"MainDashboard"]];
    [self addChildViewController:[self.storyboard instantiateViewControllerWithIdentifier:@"SecondaryDashboard"]];
}

DashboardViewController.m有点复杂。以下是最重要的方法:

- (void)viewDidLoad
{
    // Calling the viewDidLoad above to populate the childViewControllers array
    [super viewDidLoad];

    [self.scrollView setPagingEnabled:YES];
    [self.scrollView setScrollEnabled:YES];
    [self.scrollView setShowsHorizontalScrollIndicator:NO];
    [self.scrollView setShowsVerticalScrollIndicator:NO];
    [self.scrollView setDelegate:self];
}


-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    self.pageControl.currentPage = 0;
    _page = 0;
    [self.pageControl setNumberOfPages:[self.childViewControllers count]];

    UIViewController *viewController = [self.childViewControllers objectAtIndex:self.pageControl.currentPage];
    if (viewController.view.superview != nil) {
        [viewController viewWillAppear:animated];
    }

    self.scrollView.contentSize = CGSizeMake(scrollView.frame.size.width * [self.childViewControllers count], scrollView.frame.size.height);
}

还有很多其他方法,但我认为它们不相关,因为这是我的问题:应用程序启动,我看到了 scrollView 和 pageControl。背景是深灰色的,因为我在GlobalDashboard viewController 中设置了它。我可以正确滚动,并且 pageControl 已更新。但我没有看到其他观点。当我在if in处放置断点viewWillAppear并查看时viewController,它的命名正确(Dashboard Page 1这是我在情节提要中给控制器的名称),但它的_view属性显示为0x00000000,如您在此处看到的:

在此处输入图像描述

所以,我从来没有进入if,这是实际显示 viewControllers 的一些魔力发生的地方......

我的工作基于您可以在此处找到的示例项目:PageViewController。当我运行它时,它运行良好。我不知道为什么我不能让它在我自己的项目中工作。

有任何想法吗 ?

谢谢

4

1 回答 1

1

您永远不会添加视图本身 ( [self.view addSubview:/*Your child controller's view*/])。您链接到的项目- (void)loadScrollViewWithPage:(int)page在 PagerViewController.m中完成

于 2012-09-25T08:32:23.800 回答