在横向加载时,iPad上的UIPageViewController黑屏

时间:2012-08-14 09:56:56

标签: objective-c ipad ios5 landscape uipageviewcontroller

我正在开发一款基于UIPageViewController的应用程序,可在iPhone和iPad上运行。使用iPhone没有问题,因为控制器的主干位置始终设置为UIPageViewControllerSpineLocationMin。但是,在iPad中,当设备方向设置为横向时,我需要将脊柱位置设置为UIPageViewControllerSpineLocationMid。

只有当我以横向方向加载控制器时,我才会遇到一个奇怪的问题,以下视频将说明情况。 YouTubeVideo

正如您所看到的,当我以纵向方式加载控制器时以及在我横向加载时旋转设备后,一切都能正常工作。

我真的无法弄清问题在哪里。这是我用来加载控制器的代码:

    if (chapter.controllers) {

        currentPage = [chapter bookPageForCharIndex:location];

        //Load the correct controller for the bookmark page
        NSArray *array = nil;
        if (currentPage >= 0 && currentPage < chapter.controllers.count) {
            if (UIDeviceOrientationIsLandscape([[UIDevice currentDevice]orientation])  && UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) {
                [self setDoubleSided:YES];
                if (chapter.controllers.count > currentPage+1) {
                    array = [[NSArray alloc]initWithObjects:[chapter.controllers objectAtIndex:currentPage],[chapter.controllers objectAtIndex:currentPage+1],nil];
                }
                else {
                    array = [[NSArray alloc]initWithObjects:[chapter.controllers objectAtIndex:currentPage],[[[LSBookPageViewController alloc]init]autorelease],nil];
                }
            }
            else {
                array = [[NSArray alloc]initWithObjects:[chapter.controllers objectAtIndex:currentPage],nil];
            }
        }
        else {
            return;
        }
        [self playSoundsOfChapter:chapter];

        if (isRestarting) {
            [self setViewControllers:array
                           direction:UIPageViewControllerNavigationDirectionReverse 
                            animated:YES 
                          completion:nil];
            isRestarting = NO;
        }
        else {
            [self setViewControllers:array
                           direction:UIPageViewControllerNavigationDirectionForward 
                            animated:YES 
                          completion:nil];
        }
        [array release];
    }

1 个答案:

答案 0 :(得分:0)

我认为错误发生在第一个else子句中。您应在检查设备方向和设备后设置断点,然后单步执行代码。我猜你的array空了。