UIPageViewController:添加多个视图控制器时应用程序崩溃

Posted

技术标签:

【中文标题】UIPageViewController:添加多个视图控制器时应用程序崩溃【英文标题】:UIPageViewController: App crashs when adding more than one view controller 【发布时间】:2014-02-24 19:55:24 【问题描述】:

我正在尝试为我的应用制作教程屏幕。我正在使用 UIPageViewController。但是当我添加两个 ViewController 时,我的应用程序崩溃了。这是我的代码:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 

    //This is not final. Just for demo
    return _secondPage;


- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
    //This is not final. Just for demo
    return _firstPage;


- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController

    return [self.pageControllers count];


- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController

    return 0;


@end

当我调试应用程序时,它会因这行代码而崩溃:

 [self.pageViewController setViewControllers:_pages direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:nil];

【问题讨论】:

你能在崩溃时发布错误吗? 您确定self.pageViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"PageViewController"]; 正在返回UIPageViewController 【参考方案1】:

如果您将错误的或不存在的ID 传递给instantiateViewControllerWithIdentifier: 方法,您将收到异常并且您的应用程序将终止。这很可能是正在发生的事情。

ID 位于Interface Builder 中的Identity Inspector 选项卡下。它被称为Storyboard ID。你可以给它任何你想要的唯一名称。最重要的是在实例化视图控制器时使用这个ID。否则你的代码会引发异常。

【讨论】:

当我只有一个视图控制器时,一切正常。但是当我添加两个我的应用程序时。

以上是关于UIPageViewController:添加多个视图控制器时应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIPageViewController 在多个视图控制器之间滑动

UIPageViewController 有多个指示灯点亮

具有多个 XIB 的 UIPageViewController

在 UIPageViewController 中滚动多个页面会创建白色闪光

导航栏在 UIPageController 下无法正常工作?

添加页面时 UIPageViewController 崩溃