2015-12-26 2 views
0

я получаю следующее сообщение об ошибке:Получение ошибки с Page View Controller

*** Нагрузочный приложение из-за неперехваченного исключением «NSInvalidArgumentException», причина: «Количество контроллеров отображения при условии (0) не соответствует требуемому числу (1) для запрошенного перехода. '

Я не уверен, что я делаю неправильно в своем PageViewController, что может привести к этой ошибке. Также я попытался выполнить ответ, предоставленный here. Однако решение не помогло мне, потому что я не уверен, какая часть моего кода может вызвать проблему. Я довольно новичок в Swift, поэтому любая помощь будет очень признательна.

Update: Я понял, что setViewController вызывает проблему, и он уходит, когда удаляется. Однако почему это может вызвать проблему? Спасибо!

var pageViewController: UIPageViewController! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 
    self.pageViewController = harishStoryboard.instantiateViewControllerWithIdentifier("ViewController1") as! UIPageViewController 
    self.pageViewController.dataSource = self 
    let allViewControllers = [harishStoryboard.instantiateViewControllerWithIdentifier("ViewController2") as! ViewController2, harishStoryboard.instantiateViewControllerWithIdentifier("ViewController3") as! ViewController3, harishStoryboard.instantiateViewControllerWithIdentifier("ViewController4") as! ViewController4, harishStoryboard.instantiateViewControllerWithIdentifier("ViewController5") as! ViewController5, harishStoryboard.instantiateViewControllerWithIdentifier("ViewController6") as! ViewController6, harishStoryboard.instantiateViewControllerWithIdentifier("ViewController7") as! ViewController7] 
    let viewControllers = NSArray(object: allViewControllers) 
    self.pageViewController.setViewControllers(viewControllers as? [UIViewController], direction: .Forward, animated: false, completion: nil) 
    self.addChildViewController(pageViewController) 
    self.view.addSubview(self.pageViewController.view) 
    self.pageViewController.didMoveToParentViewController(self) 
} 
+1

Вы должны показать свой код, трудно понять, что вы делаете неправильно, не зная, что вы делаете вообще. –

+1

@ AndréFratelli Хорошо, я добавил свой код. – Harish

ответ

4

Это не то, как работает контроллер просмотра страниц. Вы не передаете несколько контроллеров просмотра, а только один или максимум два. См яблочных документов:

При определении интерфейса просмотра страницы контроллера, вы можете обеспечить представление содержимого диспетчеров по одному (или два, в то время, в зависимости от положения позвоночника и двухсторонним состояния) или как - использовать источник данных. При представлении контроллеров содержимого каждый раз, вы используете метод setViewControllers: direction: animated: completion: для установки текущих контроллеров представления контента. Чтобы поддерживать навигацию на основе жестов, вы должны предоставить свои контроллеры представлений, используя объект источника данных.

Я предполагаю, что вы хотите, чтобы навигационная система жестов использовалась, поэтому вам нужно будет реализовать делегат контроллера списка и источник данных. В Google есть много обучающих программ для контроля за просмотром страниц.

+1

Значит ли это, что при использовании метода setViewControllers я предоставляю только один контроллер вида? Например, это будет 'self.pageViewController.setViewControllers (viewController as? [UIViewController], направление: .Forward, анимированный: true, завершение: nil).' – Harish

+1

Да. И другой ViewController предоставляется через реализацию источника данных. Вы просто передаете первый видимый с помощью setViewController. – Darko

+1

Хорошо. Я установил обновленный код. Я думаю, что это, вероятно, проблема. Спасибо за вашу помощь. – Harish

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