UIPageViewController не работает вообще; совершенно пустой - PullRequest
1 голос
/ 31 января 2012

Итак,

Я пытаюсь использовать 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

Затем при повороте приложение завершит работу без идентифицируемой обратной трассировки.

1 Ответ

2 голосов
/ 11 февраля 2012

С,

 - (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation

метод, вы должны вызвать setViewControllers перед возвратом spineLocation.

...