我正在向PageViewController添加三个视图控制器,如下所示:
[pvc setViewControllers:[NSArray arrayWithObjects:svc, bvc, tvc, nil] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished) {
}];
然而,应用程序抛出异常并在此行停止。当我检查日志导航器时,它只是说'(lldb)'。出了什么问题?
编辑:好的,谢谢保罗。我对Objective-c很新;如何实现这些方法以在我的三个视图控制器之间滑动?这是我在appDelegate.m中的代码:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.;
UIPageViewController *pvc = [[UIPageViewController alloc] init]; // Create new PageViewController
BarsViewController *bvc = [[BarsViewController alloc] init]; // Create BarsViewController
StopwatchViewController *svc = [[StopwatchViewController alloc] init]; // Create StopwatchViewController
TimerViewController *tvc = [[TimerViewController alloc] init]; // Create TimerViewController
[pvc setViewControllers:[NSArray arrayWithObjects:svc, bvc, tvc, nil] direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:^(BOOL finished) {
}];
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade]; // Hide status bar
self.window.rootViewController = pvc; // Make tab bar controller the root view controller
[self.window makeKeyAndVisible];
return YES;
}
答案 0 :(得分:6)
您无法将3个viewcontrollers添加到uipageviewcontroller。您可以添加一个viewcontroller,也可以最多添加两个,具体取决于脊椎位置的设置。 SetViewController是一个添加可见控制器的功能,2是您可以显示的最大值。查看下面的链接,SetViewController条目有一个图表,显示您可以添加哪些控制器,具体取决于脊柱位置。
答案 1 :(得分:0)
两点:
(1b。不太可能,pvc不是UIPageViewController
。)
编辑:
好的,所以我错过了一个明显的问题,正如异常所报告的那样 - 你只能有一个或两个视图控制器。
鉴于错误消息,您需要实现UIPageViewControllerDataSource
方法:
NSArray *viewControllers = @[svc, bvc, tvc];
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
NSInteger i = [viewControllers indexOfObject:viewController];
if (i > 0) i = i - 1;
return viewControllers[i];
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController {
NSInteger i = [viewControllers indexOfObject:viewController];
if (i < ([viewControllers count] + 1)) i = i + 1;
return viewControllers[i];
}
返回上一个和下一个控制器以支持分页。