Итак,
Я пытаюсь использовать UIPageViewController
с пользовательским рабочим процессом приложения, но я реализую его в точности так, как рекомендовано в документации.
self.pageViewController = [[[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil] autorelease];
//calls setViewControllers:direction:animated:completion with valid UIViewControllers
[self setupPagesWithIndex:0];
self.pageViewController.delegate = self;
self.pageViewController.dataSource = self;
self.view.frame = CGRectMake(0, 0, 1024, 768);
self.pageViewController.view.backgroundColor = [UIColor grayColor];
Здесь я устанавливаю контроллеры вида ...
- (void) setupPagesWithIndex:(NSInteger) index
{
UIViewController* vc1 = [self uicontrollerForIndex:index];
UIViewController* vc2 = [self uicontrollerForIndex:index+1];
[self.pageViewController setViewControllers:[NSArray arrayWithObjects:vc1,vc2, nil]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
}
Единственное, что появляется на экране, это серый цвет фона. Я проверил, что UIViewControllers
действителен, имеет хорошие рамки и даже дал им цвета фона, чтобы я мог видеть что-то
Вот как я добавляю UIPageViewController на экран:
[[self rootViewController] addChildViewController:self.pageViewController];
[[self rootViewController].view addSubview:self.pageViewController.view];
[self rootViewController]
возвращает rootViewController приложения.
Вид определенно виден, потому что я вижу применяемый фоновый цвет ... однако UIPageViewController просто пуст!
Я реализовал все методы источника данных и делегата и принял протоколы; их никогда не зовут!
Мой вопрос; Каковы все требования к UIPageViewController для отображения страниц, когда вы все делаете программно?
изменить # 1, за запрос:
Этот класс является контроллером для UIPageViewController в моей собственной среде разработки приложений. Я даю контроллеру два способа создания страницы прямо сейчас - по имени изображения или по ключу актива. В любом случае он в конечном итоге возвращает представление, которое я обертываю с помощью UIViewController.
Я создаю контроллер вида с
UIViewController* vc = [[[PageTest alloc] initWithNibName:@"PageTest" bundle:nil] autorelease];
PageTest - это просто UIViewController с соответствующим пером, который является пустым, за исключением автоматически сгенерированных настроек. Затем я добавляю свой собственный вид как подпредставление к этому контроллеру представления Вот что возвращается из uicontrollerForIndex:
edit # 2, дальнейшее открытие
Я нашел способ показать книжный флиппер; если я только инициализирую его с одним контроллером представления, он покажет флиппер книги. Не имеет значения, являются ли два контроллера представления полностью разными классами; если я установил ViewControllers с двумя из них, то ничего не показывает.
если я верну UIPageViewControllerSpineLocationMid
в методе делегата
- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation
Затем при повороте приложение завершит работу без идентифицируемой обратной трассировки.