我第一次使用UIPageViewController
。当然,iOS5和我对ARC很满意。我不使用Storyboard。
在我看到的所有零碎的例子中,UIPageViewController
从不“拥有”屏幕。它始终是其他视图控制器的子项。这是一个要求吗?我想让它成为我的应用程序的根控制器,就像通常使用UINavigationController
一样。我试图以编程方式设置它,但我得到的只是一个空的页面视图控制器,其中没有内容。
这是应用程序的开始方式(这里的所有代码都在我的app委托类中):
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
[self configureLoggers];
[self applyAppearanceProxySettings];
[self configureDataStore];
[self configureNavigationController];
[self configurePageController]; // <-- this is where we do the page view controller setup, shown next.
self.window.rootViewController = self.pageController;
[self.window makeKeyAndVisible];
log4Info(@"Application completed launching.");
return YES;
}
上面代码中提到的那个方法,用于页面视图控制器的设置:
- (void)configurePageController {
CCFrontCoverViewController *frontCoverViewController = [[CCFrontCoverViewController alloc] initWithNibName:nil bundle:nil];
NSDictionary *options = [NSDictionary dictionaryWithObject:[NSNumber numberWithInt:UIPageViewControllerSpineLocationMin]
forKey:UIPageViewControllerOptionSpineLocationKey];
self.pageController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl
navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal
options:options];
self.pageController.delegate = self;
self.pageController.dataSource = self;
self.pageController.view.backgroundColor = [UIColor redColor]; // So we know we're missing content because red shows through.
NSArray *pageViewControllers = [NSArray arrayWithObjects:frontCoverViewController, self.navigationController, nil];
[self.pageController setViewControllers:pageViewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil];
}
我还记录了两个数据源回调方法,它们甚至都没有被调用。
当这个运行时,我只是得到一个空白的红色屏幕。同样,没有涉及故事板。我错过了什么?
答案 0 :(得分:5)
我能够在示例项目中使用UIPageViewController
作为根视图控制器,前提是:
UIPageViewController
。 UIPageViewController
的{{1}}属性已设置(与脊椎位置一致)。 doubleSided
的{{1}}数组(再次,与主干位置和UIPageViewController
属性一致)。您的代码中似乎没有将viewControllers
设置为doubleSided
(因为您的doubleSided
数组中有两个项目)。在设置YES
数组之前添加它会解决您的问题吗?
编辑:仅针对子孙后代,在UIPageViewController docs中,viewControllers
方法的说明中有一个图表,显示了所有有效组合允许的视图控制器数量脊柱位置和viewControllers
。