我正在使用按钮来更改pagecontroll,但它发生了变化,但是问题出在最后一页,应用崩溃。这是我更改页面的代码
func backBtnClicked() {
if currentIndex > 0 {
currentIndex -= 1
}
if currentIndex < 1 {
backBtn.isHidden = true
}
if currentIndex >= 0 {
nextBtn.setTitle("Next", for: .normal)
let startingViewController: TableVC? = viewControllerAtIndex(index: currentIndex)
let viewControllers = [startingViewController]
pageController?.setViewControllers(viewControllers as? [UIViewController], direction: .reverse, animated: false)
}
}
@objc func nextBtnClicked() {
if currentIndex != NSNotFound {
currentIndex += 1
}
if currentIndex == pg.count - 1 {
//Navigate Outside Pageview controller
log("lastt")
} else {
let startingViewController: TableVC? = viewControllerAtIndex(index: currentIndex)
let viewControllers = [startingViewController]
pageController?.setViewControllers(viewControllers as? [UIViewController], direction: .forward, animated: false)
}
}
这是我得到的错误
由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'视图控制器的数量 提供的(0)与请求的要求的数量(1)不匹配 过渡”
任何帮助
答案 0 :(得分:0)
替换
pageController?.setViewControllers(viewControllers as? [UIViewController], direction: .forward, animated: false)
使用
pageController?.setViewControllers(viewControllers, direction: .forward, animated: false)
成为
let startingViewController = viewControllerAtIndex(index: currentIndex)!
pageController?.setViewControllers([startingViewController], direction: .forward, animated: false)
在后按
guard currentIndex - 1 >= 0 else { return }
currentIndex -= 1
// get the vc
在下一次按下
guard currentIndex + 1 < pg.count else { return }
currentIndex += 1
// get the vc
在您当前的代码中,似乎let startingViewController: TableVC?
在某些时候返回nil,这使得此viewControllers as? [UIViewController]
成为空数组