プロジェクトにページ スクロール機能を実装しようとしています。ストーリーボード (および ARC) を使用して、iOS 5 向けに開発しています。これは私がストーリーボードで行ったことです:
最初の viewController (左側) には、scrollView と pageControl があります。そのクラスは と呼ばGlobalDashboardViewController
れ、クラスDashboardViewController
(から継承) を継承しUIViewController
ます。他の 2 つのコントローラーは、識別子 ( MainDashboardおよびSecondaryDashboard ) を持つ単純な UIViewControllers です。
にはGlobalDashboardViewController.m
、 childViewControllers を取得する viewDidLoad のみがあります。
- (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にブレークポイントを配置してviewWillAppear
を見るとviewController
、正しく名前が付けられています (は、ストーリーボードでコントローラーに付けた名前です) が、ここでわかるように、Dashboard Page 1
その_view
プロパティには0x00000000が表示されます。
そのため、実際にviewControllerを表示する魔法の一部が発生するifの中に入ることはありません...
私の作業は、ここで見つけることができるサンプル プロジェクトに基づいています: PageViewController . 実行すると、完全に機能します。自分のプロジェクトでそれを機能させることができない理由がわかりません。
何か案は ?
ありがとう