UIPageViewController完全不起作用;完全空白

时间:2012-01-31 00:05:09

标签: objective-c ios uikit uipageviewcontroller

所以,

我正在尝试将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。

视图绝对可见,因为我可以看到我应用的backgroundcolor ...但是,UIPageViewController只是完全空白!

我实现了所有数据源和委托方法并采用了协议;他们甚至都没有被召唤!

我的问题是;当您以编程方式执行所有操作时,UIPageViewController显示页面的所有要求是什么?

根据请求

编辑#1: 这个类是我自己的应用程序构建框架中的UIPageViewController的控制器。我现在给控制器两种方法来构建一个页面 - 从图像名称或一种资产键。在任何一种情况下,它最终都会返回一个我用UIViewController包装的视图。

我使用

创建视图控制器
UIViewController* vc = [[[PageTest alloc] initWithNibName:@"PageTest" bundle:nil] autorelease];

'PageTest'只是一个带有相应nib的UIViewController,除了自动生成的设置外,它是空白的。然后我将自定义视图作为子视图添加到此视图控制器。这是从uicontrollerForIndex返回的内容:

编辑#2,进一步发现

我找到了一种方法来展示这本书的鳍状肢;如果我只使用一个视图控制器初始化它,它将显示书籍翻板。两个视图控制器是完全不同的类并不重要;如果我用其中两个setViewControllers然后什么都没有显示。

如果我在委托方法中返回UIPageViewControllerSpineLocationMid

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

然后在轮换时,应用程序将崩溃而没有可识别的回溯。

1 个答案:

答案 0 :(得分:2)

使用,

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

方法,您必须在返回setViewControllers之前调用spineLocation