我不断收到以下错误:
***由于未捕获的异常“ NSInvalidArgumentException”而终止应用程序,原因:“提供的视图控制器数量(0)与请求的转换所需的数量(1)不匹配。”
我不确定自己做错了什么PageViewController
可能导致此错误。我也尝试遵循此处提供的答案。但是,该解决方案并没有帮助我,因为我不确定我的代码的哪一部分可能导致了问题。我对Swift来说还很陌生,因此任何帮助将不胜感激。
更新:我发现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)
}
这不是页面视图控制器的工作方式。您不会传递多个视图控制器,而只能传递一个或最多两个。请参阅苹果文档:
定义页面视图控制器界面时,您可以一次提供一个内容视图控制器(或一次提供两个,具体取决于书脊位置和双面状态),也可以根据需要使用数据源。一次提供一个内容视图控制器时,可以使用setViewControllers:direction:animated:completion:方法来设置当前的内容视图控制器。为了支持基于手势的导航,必须使用数据源对象提供视图控制器。
我假设您要基于手势导航,因此您将需要实现页面视图控制器委托和数据源。Google上有很多页面视图控制器教程。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句