首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用页面视图控制器时出错

使用页面视图控制器时出错
EN

Stack Overflow用户
提问于 2015-12-26 11:16:09
回答 2查看 2.7K关注 0票数 1

我一直收到以下错误:

*由于未捕获的异常'NSInvalidArgumentException‘而终止应用程序,原因:’提供的视图控制器数量(0)与请求的转换所需的数量(1)不匹配。‘

我不确定我在PageViewController中做错了什么,这可能会导致此错误。我也试着按照here提供的答案去做。然而,这个解决方案对我没有帮助,因为我不确定我的哪段代码可能会导致这个问题。我是Swift的新手,所以任何帮助都将不胜感激。

更新:我发现是setViewController导致了这个问题,删除后这个问题就消失了。然而,为什么这会引起问题呢?谢谢!

代码语言:javascript
复制
    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)
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-26 18:35:07

这不是页面视图控制器的工作方式。您不会传递多个视图控制器,但只能传递一个或最多传递两个。请参阅苹果文档:

在定义页面视图控制器接口时,可以一次提供一个内容视图控制器(或者一次提供两个,具体取决于书脊位置和双面状态),也可以根据需要使用数据源。在一次提供一个内容视图控制器时,可以使用setViewControllers:direction:animated:completion:方法来设置当前的内容视图控制器。要支持基于手势的导航,必须使用数据源对象提供视图控制器。

我假设你想要基于手势的导航,所以你需要实现页面视图控制器委托和数据源。google上有很多关于页面视图控制器的教程。

票数 6
EN

Stack Overflow用户

发布于 2018-10-23 03:46:04

方法set setViewControllers只希望显示第一个视图控制器!试着这样做:

代码语言:javascript
复制
if let firstVC = myViewControllers?.first {
    setViewControllers([firstVC], direction: .forward, animated: true)
}

myViewControllers是我的UIPageViewController子类的一个属性!

希望它能为你工作!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34468196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档