【发布时间】:2018-10-08 02:02:33
【问题描述】:
我成功实现了一个 PageViewController,我可以在其中滑动五个页面(ViewControllers)。问题是当我添加一个连接到其中一个 ViewController 的按钮时。它显示了页面,就像它应该的那样,但是我被困在那个页面上。 PageViewController 不再起作用。我不能再在页面之间滑动。
import UIKit
class PageViewController: UIPageViewController, UIPageViewControllerDataSource, UIPageViewControllerDelegate {
lazy var subViewControllers:[UIViewController] = {
return [
UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ViewController1") as! ViewController1,
UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ViewController2") as! ViewController2,
UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ViewController3") as! ViewController3,
UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ViewController4") as! ViewController4,
UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "ViewController5") as! ViewController5,
]
}()
override func viewDidLoad() {
super.viewDidLoad()
self.delegate = self
self.dataSource = self
setViewControllers([subViewControllers[0]], direction: .forward, animated: true, completion: nil)
}
// MARK - UIPageViewControllerDataSource
func presentationCount(for pageViewController: UIPageViewController) -> Int {
return subViewControllers.count
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
let currentIndex:Int = subViewControllers.index(of: viewController) ?? 0
if(currentIndex <= 0) {
return nil
}
return subViewControllers[currentIndex-1]
}
func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
let currentIndex:Int = subViewControllers.index(of: viewController) ?? 0
if(currentIndex >= subViewControllers.count-1) {
return nil
}
return subViewControllers[currentIndex+1]
}
}
【问题讨论】:
-
不要将按钮与 segue 关联,而是将其与 IBAction 关联并在 IBAction 中调用
setViewControllers -
我试过了,但我无法从按钮所在的 ViewController 访问 setViewControllers。上面的代码来自我的 PageViewController。该按钮位于 ViewController4 中,按下时显示 ViewController3。也许有一个我可以创建的功能。有什么代码可以推荐吗?
标签: ios swift4 segue uipageviewcontroller