Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fileprivate lazy var pages: [UIViewController] = {
- return [
- self.getViewController(withIdentifier: "BasicInfoViewController"),
- self.getViewController(withIdentifier: "AccountInfoViewController"),
- self.getViewController(withIdentifier: "ContactInfoViewController")
- ]
- }()
- fileprivate func getViewController(withIdentifier identifier: String) -> UIViewController {
- return UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: identifier)
- }
- override func viewDidLoad() {
- self.dataSource = self
- self.delegate = self
- if let firstVC = pages.first
- {
- setViewControllers([firstVC], direction: .forward, animated: true, completion: nil)
- }
- setupPageControl()
- }
- func setupPageControl(){
- let appearance = UIPageControl.appearance()
- appearance.pageIndicatorTintColor = UIColor.gray
- appearance.currentPageIndicatorTintColor = UIColor.blue
- appearance.backgroundColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
- }
- func presentationCount(for pageViewController: UIPageViewController) -> Int {
- return 3
- }
- func presentationIndex(for pageViewController: UIPageViewController) -> Int {
- return 0
- }
- //swipe backwards
- func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
- guard let viewControllerIndex = pages.index(of: viewController) else { return nil }
- let previousIndex = viewControllerIndex - 1
- guard previousIndex >= 0 else { return pages.last }
- guard pages.count > previousIndex else { return nil }
- return pages[previousIndex]
- }
- //swipe forward
- func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController?
- {
- guard let viewControllerIndex = pages.index(of: viewController) else { return nil }
- let nextIndex = viewControllerIndex + 1
- guard nextIndex < pages.count else { return pages.first }
- guard pages.count > nextIndex else { return nil }
- return pages[nextIndex]
- }
- func goToNextPage(){
- guard let currentViewController = self.viewControllers?.first else { return }
- guard let nextViewController = dataSource?.pageViewController( self, viewControllerAfterViewController: currentViewController ) else { return }
- setViewControllers([nextViewController], direction: .Forward, animated: false, completion: nil)
- }
- func goToPreviousPage(){
- guard let currentViewController = self.viewControllers?.first else { return }
- guard let previousViewController = dataSource?.pageViewController( self, viewControllerBeforeViewController: currentViewController ) else { return }
- setViewControllers([previousViewController], direction: .Reverse, animated: false, completion: nil)
- }
Add Comment
Please, Sign In to add comment