我正在尝试在我的项目中实现页面滚动功能。我为 iOS 5 开发,带有故事板(和 ARC)。这就是我在故事板中所做的:
第一个 viewController(在左边)有一个 scrollView 和一个 pageControl。它的类被称为GlobalDashboardViewController
,并继承自类DashboardViewController
(继承自UIViewController
)。其他 2 个控制器是带有标识符(MainDashboard和SecondaryDashboard)的简单 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。当我运行它时,它运行良好。我不知道为什么我不能让它在我自己的项目中工作。
有任何想法吗 ?
谢谢