所以,
我正在尝试将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
然后在轮换时,应用程序将崩溃而没有可识别的回溯。
答案 0 :(得分:2)
使用,
- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation
方法,您必须在返回setViewControllers
之前调用spineLocation
。