我正在尝试让UIPageViewController第一次工作,但每当我尝试设置其视图控制器时,我似乎都遇到了麻烦。
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let leftViewController = storyboard?.instantiateViewControllerWithIdentifier("LeftViewController")
let rightViewController = storyboard?.instantiateViewControllerWithIdentifier("RightViewController")
let viewControllerArray: [UIViewController] = [leftViewController!, rightViewController!]
self.setViewControllers(viewControllerArray, direction: .Forward, animated: true, completion: nil)
}
每次到达setViewControllers()
方法时,应用都会在AppDelegate
文件中崩溃,并显示以下错误日志:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException',
reason: 'The number of view controllers provided (2) doesn't match the number
required (1) for the requested transition
23 UIKit 0x0000000103a06610 UIApplicationMain + 171
24 PageViewTesting 0x000000010300649d main + 109
25 libdyld.dylib 0x0000000105a3292d start + 1
26 ??? 0x0000000000000001 0x0 + 1)
libc++abi.dylib: terminating with uncaught exception of type NSException
我的故事板中目前有一个UIPageViewController
和两个UIViewControllers
。我已经仔细检查过他们的ID以及instantiateViewControllerWithIdentifier()
方法的正确性。
为什么我收到此错误的任何想法?
答案 0 :(得分:1)
来自UIPageViewController
的课程参考:
// setViewControllers:direction:animated:completion:
func setViewControllers(_ viewControllers: [UIViewController]?,
direction direction: UIPageViewControllerNavigationDirection,
animated animated: Bool,
completion completion: ((Bool) -> Void)?)
传递给此方法的视图控制器将是那些 动画完成后可见。 使用数据源 提供用户导航的其他视图控制器。
对于单视图控制器视图模式,代码中使用的方法.setViewControllers
仅采用单个视图控制器(但是,在数组表单上)。参数采用数组[UIViewController]
有点令人困惑,但这是为了在使用脊椎(中间)视图时使用PageViewController的doubleSided
属性。
定义页面视图控制器界面时,可以提供 内容视图控制器一次一个(或一次两个,取决于 在脊椎位置和双侧状态)
...
UIPageViewControllerSpineLocationMid
在中间或中间脊柱 屏幕。
一次显示两个视图控制器。
您打算使用脊椎中视图吗?在这种情况下,您可以发送两个视图控制器,否则,您应该发送一个并使用数据源添加其他视图控制器。