Guest User

Untitled

a guest
Jan 22nd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.78 KB | None | 0 0
  1. fileprivate lazy var pages: [UIViewController] = {
  2. return [
  3. self.getViewController(withIdentifier: "BasicInfoViewController"),
  4. self.getViewController(withIdentifier: "AccountInfoViewController"),
  5. self.getViewController(withIdentifier: "ContactInfoViewController")
  6. ]
  7. }()
  8.  
  9. fileprivate func getViewController(withIdentifier identifier: String) -> UIViewController {
  10. return UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: identifier)
  11. }
  12.  
  13. override func viewDidLoad() {
  14.  
  15. self.dataSource = self
  16. self.delegate = self
  17.  
  18. if let firstVC = pages.first
  19. {
  20. setViewControllers([firstVC], direction: .forward, animated: true, completion: nil)
  21. }
  22.  
  23.  
  24. setupPageControl()
  25.  
  26. }
  27.  
  28. func setupPageControl(){
  29. let appearance = UIPageControl.appearance()
  30. appearance.pageIndicatorTintColor = UIColor.gray
  31. appearance.currentPageIndicatorTintColor = UIColor.blue
  32. appearance.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
  33. }
  34.  
  35. func presentationCount(for pageViewController: UIPageViewController) -> Int {
  36. return 3
  37. }
  38.  
  39. func presentationIndex(for pageViewController: UIPageViewController) -> Int {
  40. return 0
  41. }
  42.  
  43. //swipe backwards
  44. func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
  45.  
  46. guard let viewControllerIndex = pages.index(of: viewController) else { return nil }
  47.  
  48. let previousIndex = viewControllerIndex - 1
  49.  
  50. guard previousIndex >= 0 else { return pages.last }
  51.  
  52. guard pages.count > previousIndex else { return nil }
  53.  
  54. return pages[previousIndex]
  55. }
  56.  
  57. //swipe forward
  58. func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
  59. {
  60. guard let viewControllerIndex = pages.index(of: viewController) else { return nil }
  61.  
  62. let nextIndex = viewControllerIndex + 1
  63.  
  64. guard nextIndex < pages.count else { return pages.first }
  65.  
  66. guard pages.count > nextIndex else { return nil }
  67.  
  68. return pages[nextIndex]
  69. }
  70.  
  71. func goToNextPage(){
  72.  
  73. guard let currentViewController = self.viewControllers?.first else { return }
  74.  
  75. guard let nextViewController = dataSource?.pageViewController( self, viewControllerAfterViewController: currentViewController ) else { return }
  76.  
  77. setViewControllers([nextViewController], direction: .Forward, animated: false, completion: nil)
  78.  
  79. }
  80.  
  81.  
  82. func goToPreviousPage(){
  83.  
  84. guard let currentViewController = self.viewControllers?.first else { return }
  85.  
  86. guard let previousViewController = dataSource?.pageViewController( self, viewControllerBeforeViewController: currentViewController ) else { return }
  87.  
  88. setViewControllers([previousViewController], direction: .Reverse, animated: false, completion: nil)
  89.  
  90. }
Add Comment
Please, Sign In to add comment