我希望创建一个与 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/