Я пытаюсь реализовать функцию прокрутки страницы в своем проекте. Я разрабатываю для iOS 5 с раскадровками (и ARC). Вот что я сделал в своей раскадровке:
Первый viewController (слева) имеет scrollView и pageControl. Его класс называется GlobalDashboardViewController
и наследуется от класса DashboardViewController
(который наследуется от UIViewController
). Два других контроллера — это простые UIViewController с идентификаторами (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 обновляется. Но я не вижу других взглядов. Когда я помещаю точку останова в if в viewWillAppear
и смотрю на viewController
, она называется правильно (Dashboard Page 1
, это имя, которое я дал контроллеру в раскадровке), но его свойство _view
показывает 0x00000000, как вы можете видеть здесь:
Итак, я никогда не попадаю внутрь if, где происходит некоторая магия фактического отображения viewControllers...
Моя работа основана на примере проекта, который вы можете найти здесь: PageViewController. Когда я запускаю его, он работает отлично. Я понятия не имею, почему я не могу заставить его работать в моем собственном проекте.
Любые идеи ?
Спасибо