1

Я ищу, чтобы создать PageViewController очень похож на SnapChat, в котором вы можете прокручивать с UIImagePickerController на другой VC. Для этого у меня есть мой начальный VC, который отображает диспетчер imagepicker, и второй VC (заголовок VC), который я хочу получить после этого начального VC. Чтобы инкапсулировать мой PageViewController, я создал еще один класс VC (показано ниже), который я теперь установил как мой начальный VC, и я пытаюсь обрабатывать источник данных VVC.Почему я получаю эту ошибку после запуска моего PageViewController?

По какой-то причине он не работает, а ошибка - «фатальная ошибка: неожиданно обнаружена нуль при развертывании необязательного значения». Это потому, что вы не можете содержать imagePickerController в PageVC (сомнительно, как 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 

} 
+0

Какое сообщение об ошибке вы получаете? – Nick

+0

досадно это: фатальная ошибка: неожиданно найден nil при разворачивании необязательного значения –

+0

Это звучит как ошибка времени выполнения, а не ошибка компиляции. –

ответ

0

Единственная дополнительная развертка, которую я вижу, находится на первой линии. Это то, где выбрасывается исключение? Вы уверены, что у вашего основного контроллера есть связанная с ним раскадровка? Если да, уверены ли вы, что в раскадровке есть контроллер с именем «PageController»?

+0

FYI, я просто сделал быстрый тест, и я смог поместить 'UIImagePickerController' в' UIPageViewController'. –

+0

Полезно знать! Ошибка, которая отображается в моем потоке: libswiftCore.dylib 'function signature of Swift. _fatalErrorMessage (Swift.StaticString, Swift.StaticString, Swift.StaticString, Swift.UInt) Я не знаю, сколько это значит для вас. –

+0

Существует раскадровка, содержащая контроллер под названием «PageController». Как проверить, что главный контроллер подключен к раскадровке? Я предполагаю, что это так, как код работал нормально до того, как я попытался добавить контроллер просмотра. –

Смежные вопросы