为什么我在运行PageViewController后出现此错误?

时间:2015-10-30 15:44:08

标签: ios swift uiimagepickercontroller uigesturerecognizer uipageviewcontroller

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

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

NB。该项目在没有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

}

1 个答案:

答案 0 :(得分:0)

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