ios - 为什么我在运行 PageViewController 后会收到此错误?

标签 ios swift uiimagepickercontroller uigesturerecognizer uipageviewcontroller

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

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

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

}

最佳答案

我看到的唯一可选展开是在第一行。那是抛出异常的地方吗?你确定你的主 Controller 有一个与之关联的 Storyboard吗?如果是这样,您确定 Storyboard包含一个名为“PageController”的 Controller 吗?

关于ios - 为什么我在运行 PageViewController 后会收到此错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33439821/

相关文章:

ios - OBD2 BLE通讯-如何发送AT命令和接收数据

arrays - 我如何将这些单独的标签压缩为自定义 UICollectionView 单元格中的标签数组?

swift - Swift 中的泛型

ios - UIImagepicker 显示图像捕获而不是视频录制

SwiftUI AspectRatio 不适用于来自相机的图像

objective-c - 显示 map 时,iOS 6 应用程序在 EAGLContext 中崩溃

iphone - 如何在 iPhone 上制作一个不完全覆盖底层屏幕的新屏幕

ios - AS3 iOS 防止 "animated"方向改变

ios - 为什么默认调用父类(super class)指定的初始值设定项?

ios - swift 2 : Image picker crashes after at didFinishPickingMediaWithInfo