为啥我在运行 PageViewController 后会收到此错误?

Posted

技术标签:

【中文标题】为啥我在运行 PageViewController 后会收到此错误?【英文标题】:Why am I getting this error after running my PageViewController?为什么我在运行 PageViewController 后会收到此错误? 【发布时间】:2015-10-30 15:44:07 【问题描述】:

我希望创建一个与 SnapChat 非常相似的 PageViewController,您可以借此从 UIImagePickerController 滑动到另一个 VC。为此,我有我的初始 VC,它显示 imagepickercontroller,以及我想在这个初始 VC 之后出现的第二个 VC(一个标题 VC)。为了封装我的 PageViewController,我创建了另一个 VC 类(如下所示),我现在将其设置为我的初始 VC,并且我正在尝试处理 PageVC 数据源。

无论出于何种原因,它都无法正常工作,并且出现错误 - “致命错误:在展开可选值时意外发现 nil”。这是因为您不能在 PageVC 中包含 imagePickerController(就像 SnapChat 一样令人怀疑)。我创建了一个更简单的模板,其中完美地包含了两个简单的 VC——为什么我不能在这里做呢?我做的另一个是,我在项目开始的初始 VC 中包含以下所有代码,而在这里我创建了一个额外的 VC 并手动更改它以使其成为“初始视图控制器”。

注意。该项目在没有 pageVC 的情况下编译良好,因此与其他 VC 中的任何错误代码无关。

我非常困惑,非常感谢对这个棘手问题的帮助。谢谢!

class PageViewController: UIViewController, UIPageViewControllerDataSource 

private var pageViewController: UIPageViewController?

private let VCarray = [ViewController(), CaptionViewController()]

override func viewDidLoad() 
    super.viewDidLoad()

    createPageViewController()



private func createPageViewController() 

    let pageController = self.storyboard!.instantiateViewControllerWithIdentifier("PageController") as! UIPageViewController
    pageController.dataSource = self

    if VCarray.count > 0 
        pageController.setViewControllers([ViewController()], direction: UIPageViewControllerNavigationDirection.Forward, animated: false, completion: nil)
    

    pageViewController = pageController
    addChildViewController(pageViewController!)
    self.view.addSubview(pageViewController!.view)
    pageViewController!.didMoveToParentViewController(self)



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

    if viewController.isKindOfClass(CaptionViewController) 

        let pvc = self.storyboard?.instantiateViewControllerWithIdentifier("CameraVC")
        return pvc

    

    return nil



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

    if viewController.isKindOfClass(ViewController) 

        let pvc = self.storyboard?.instantiateViewControllerWithIdentifier("CaptionVC")
        return pvc

    

    return nil


【问题讨论】:

您收到的错误信息是什么? 令人讨厌的是:致命错误:在展开可选值时意外发现 nil 这听起来像是运行时错误,而不是编译错误。 你说得对,已作相应修改。格雷格有什么线索吗? 【参考方案1】:

我看到的唯一可选的展开是在第一行。那是抛出异常的地方吗?你确定你的主控制器有一个与之关联的故事板吗?如果是这样,您确定情节提要包含名为“PageController”的控制器吗?

【讨论】:

仅供参考,我刚刚做了一个快速测试,我能够将UIImagePickerController 放入UIPageViewController 很高兴知道!我的线程中显示的错误是:libswiftCore.dylib`function signature specialization of Swift._fatalErrorMessage (Swift.StaticString, Swift.StaticString, Swift.StaticString, Swift.UInt) 我不知道这对你意味着什么。 有一个故事板包含一个名为“PageController”的控制器。如何检查主控制器是否与故事板连接?我认为这是因为在我尝试添加 Pageviewcontroller 之前代码运行良好。 您是否尝试过单步执行代码以查看抛出异常的位置?

以上是关于为啥我在运行 PageViewController 后会收到此错误?的主要内容,如果未能解决你的问题,请参考以下文章

PageViewController 嵌入到其他 PageViewController

IOS:通过PageViewController显示WebView

pageViewController 的视差效果

移除 PageViewController

嵌入在 containerView 中的 PageViewController 显示前一个视图的小边距

如何根据 PageViewController 更改按钮的操作?