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

Posted

技术标签:

【中文标题】使用 UIPageViewController 在多个视图控制器之间滑动【英文标题】:Swipe between multiple view controllers using UIPageViewController 【发布时间】:2015-02-26 03:45:22 【问题描述】:

我的 UIPageViewController 根本不工作。我想要做的是在 UIPageViewController 中切换 2 个视图控制器。我已经在这里遵循了指导方针,但失败了。 Using UIPageViewController with swift and multiple view controllers。第一个视图控制器出现成功,但是当我尝试滑动到第二个视图控制器时,它会抛出此错误消息。我已经正确设置了所有标识符。

fatal error: unexpectedly found nil while unwrapping an Optional value

从这里开始

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? 

        let identifier = viewController.restorationIdentifier
        let index = self.identifiers.indexOfObject(identifier!) // error message here

        //if the index is 0, return nil since we dont want a view controller before the first one
        if index == 0 

            return nil
        

        //decrement the index to get the viewController before the current one
        self.index = self.index - 1
        return self.viewControllerAtIndex(self.index)

    

Main.storyboard

源码:https://github.com/datomnurdin/RevivalxSwiftPageViewController

【问题讨论】:

今日名言:“我的 UIPageViewController 根本不工作”。一样的…… 【参考方案1】:

尝试访问视图控制器的 restorationIdentifier 时发生崩溃。您使用 ! 解包它,但它是 nil ;作为第一个解决方案,在情节提要中设置 restorationIdentifier

一般情况下,在您确定它不是 nil 的情况下使用 ! 解包值(通过在前面添加 if 语句)。

【讨论】:

它对我有用。将在您的 GitHub 存储库上提交 PR 以显示结果。 刚刚在你的 repo 上提交了 PR。在 Xcode 6.2 (b. 6C131e) 下测试。

以上是关于使用 UIPageViewController 在多个视图控制器之间滑动的主要内容,如果未能解决你的问题,请参考以下文章

在 UIPageViewController 中使用时的 PageControl backgroundColor

使用 UIPageViewController 导航

使用 UIPageViewController 创建网格/地图

使用 Swift 在 UIPageViewController 子视图之间传递数据

如何让 UIPageViewController 使用过渡样式滚动?

Swift - 在 vi​​ewDidAppear 中使用新信息重新加载 UIPageViewController