2016-03-13 3 views
0

Привет У меня есть элемент управления pageView с некоторыми контроллерами view внутри. Там пустые контроллеры Ара с одной меткой внутриPageViewController сбой при повороте

Проблема заключается в том, что он выходит из строя при попытке повернуть его

Вот код

class FAPageViewController: UIPageViewController , UIPageViewControllerDataSource, UIPageViewControllerDelegate { 

var pages = ["one", "two"] 

var pageViewController = UIPageViewController() 

override func viewDidLoad() { 
    super.viewDidLoad() 

    pages.removeAll() 
    for (var i = 0; i < 4; i++) { 
     var obj = "child" 
     pages.append(obj) 
    } 

    pageViewController = UIPageViewController(transitionStyle: .Scroll, navigationOrientation: .Horizontal, options: nil) 
    pageViewController.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y + 64, self.view.frame.width, self.view.frame.height - 64) 

    addChildViewController(pageViewController) 
    self.view.addSubview(pageViewController.view) 

    pageViewController.delegate = self 
    pageViewController.dataSource = self 

    pageViewController.setViewControllers([viewcontrollerAtIndex(0)], direction: .Forward, animated: true, completion: nil) 
    pageViewController.didMoveToParentViewController(self) 

    print(pages) 


} 

func viewcontrollerAtIndex(index: Int) -> UIViewController { 
    let vc = storyboard?.instantiateViewControllerWithIdentifier(pages[index]) 
    return vc! 
} 

func pageViewController(pageViewController: UIPageViewController, viewControllerAfterViewController viewController: UIViewController) -> UIViewController? { 

    if let index = pages.indexOf(viewController.restorationIdentifier!) { 

     if index < pages.count - 1 { 
      return viewcontrollerAtIndex(index + 1) 
     } 

    } 

    return nil 
} 

func pageViewController(pageViewController: UIPageViewController, viewControllerBeforeViewController viewController: UIViewController) -> UIViewController? { 

    if let index = pages.indexOf(viewController.restorationIdentifier!) { 

     if index > 0 { 
      return viewcontrollerAtIndex(index - 1) 
     } 

    } 

    return nil 
} 

} 

Вот лог

2016- консоли 03-13 14: 19: 16.743 FacebookAlbums [7550: 1624956] * Ошибка утверждения в - [FacebookAlbums.FAPageViewController willAnimateRotationToInterfaceOrientation: duration:],/BuildRoot/Library/Cac hes/com.apple.xbs/Источники/UIKit_Sim/UIKit-3512.30.14/UIPageViewController.m: 1062 2016-03-13 14: 19: 16.748 FacebookAlbums [7550: 1624956] * Завершение приложения из-за неперехваченного исключения 'NSInternalInconsistencyException ', причина: «Нет контроллеров просмотра»

ответ

0

У меня была та же проблема. Вот как я решил: я создал UIPageViewController еще раз (точно как когда мы делали в первый раз) в случае вращения устройства, добавив следующий метод UIPageViewController файл реализации:

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 

Поскольку большинство время, UIPageViewController представлено модально, поэтому при вращении устройства этот контроллер снова будет вызван.

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