Flags/RootViewController.swift
/* |
Copyright (C) 2016 Apple Inc. All Rights Reserved. |
See LICENSE.txt for this sample’s licensing information |
Abstract: |
The `RootViewController` manages an embedded `UIPageViewController` to display a randomized list of flags provided by a `RootViewControllerDataSource`. |
*/ |
import UIKit |
class RootViewController: UIViewController, UIPageViewControllerDelegate { |
// MARK: Properties |
private var pageViewController: UIPageViewController? |
private var currentIndex = 0 |
private lazy var dataSource: RootViewControllerDataSource = { |
let controller = RootViewControllerDataSource(storyboard: self.storyboard!) |
return controller |
}() |
// MARK: UIViewController |
override func viewDidLoad() { |
super.viewDidLoad() |
pageViewController = childViewControllers[0] as? UIPageViewController |
guard let pageViewController = pageViewController else { return } |
guard let startingViewController = dataSource.viewController(at: 0) else { return } |
let viewControllers = [startingViewController] |
pageViewController.setViewControllers(viewControllers, direction: .forward, animated: false, completion: nil) |
pageViewController.dataSource = dataSource |
pageViewController.didMove(toParentViewController: self) |
} |
// MARK: Interface Builder actions |
@IBAction func forwardButtonPressed(_ sender: UIButton) { |
currentIndex += 1 |
currentIndex = currentIndex % dataSource.numberOfFlags |
let viewController = dataSource.viewController(at: currentIndex)! |
pageViewController?.setViewControllers([viewController], direction: .forward, animated: true, completion: nil) |
} |
@IBAction func backButtonPressed(_ sender: UIButton) { |
currentIndex -= 1 |
if currentIndex < 0 { |
currentIndex = dataSource.numberOfFlags - 1 |
} |
let viewController = dataSource.viewController(at: currentIndex)! |
pageViewController?.setViewControllers([viewController], direction: .reverse, animated: true, completion: nil) |
} |
} |
Copyright © 2016 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2016-10-27