UIPageViewController 根本不起作用;完全空白
Posted
技术标签:
【中文标题】UIPageViewController 根本不起作用;完全空白【英文标题】:UIPageViewController doesn't work at all; totally blank 【发布时间】:2012-01-31 00:05:08 【问题描述】:所以,
我正在尝试将 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' 只是一个带有相应 nib 的 UIViewController,除了自动生成的设置外,它是空白的。然后,我将我的自定义视图作为子视图添加到此视图控制器。这是从 uicontrollerForIndex 返回的:
编辑#2,进一步发现
我找到了一种展示书架的方法;如果我只用一个视图控制器初始化它,它将显示翻书机。两个视图控制器是否完全是不同的类并不重要;如果我用其中两个 setViewControllers 则什么都不会显示。
如果我在委托方法中返回UIPageViewControllerSpineLocationMid
- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation
然后在旋转时,应用程序将崩溃而没有可识别的回溯。
【问题讨论】:
能否提供“[self uicontrollerForIndex:index];”的信息方法? 当您使用addChildViewController:
操作viewController 层次结构时,您还需要调用[self.pageViewController didMoveToParentViewController:self];
【参考方案1】:
随着,
- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation
方法,在返回spineLocation
之前必须调用setViewControllers
。
【讨论】:
以上是关于UIPageViewController 根本不起作用;完全空白的主要内容,如果未能解决你的问题,请参考以下文章
UIPageViewController - 以编程方式更改页面在 iPhone 4s/5/5s 上不起作用
Swift canEditRowAtIndexPath 在 UIPageViewController EZSwipeViewController 中不起作用
使用 UIPageViewController 在多个视图控制器之间滑动