viewController.view.superview是零

时间:2012-09-25 08:27:37

标签: ios uiscrollview uipagecontrol

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

enter image description here

第一个viewController(左侧)有一个scrollView和一个pageControl。它的类名为GlobalDashboardViewController,继承自类DashboardViewController(继承自UIViewController)。其他2个控制器是简单的UIViewControllers,带有标识符( MainDashboard SecondaryDashboard )。

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。但我没有看到其他观点。当我在viewWillAppear中的 处放置断点,并查看viewController时,它的名称正确(Dashboard Page 1,这是我给控制器的名称在故事板中),但其_view属性显示 0x00000000 ,如您所见:

enter image description here

所以,我从来没有进入 if ,这是实际显示viewControllers的一些神奇之处......

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

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:1)

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

内的- (void)loadScrollViewWithPage:(int)page中完成