Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import UIKit
- class ScheduleViewController: BaseViewController {
- @IBOutlet weak var pageContentView: UIView!
- @IBOutlet weak var currentDateLabel: UILabel!
- private var pageViewController: UIPageViewController?
- var allSchedules = [[String: Any]]()
- override func viewDidLoad() {
- super.viewDidLoad()
- self.navigationTitle = "SCHEDULE"
- initDailySchedulePageView()
- }
- override func didReceiveMemoryWarning() {
- super.didReceiveMemoryWarning()
- // Dispose of any resources that can be recreated.
- }
- func initDailySchedulePageView() {
- //setup pageview
- self.pageViewController = UIPageViewController(transitionStyle: .scroll, navigationOrientation: .horizontal, options: [UIPageViewControllerOptionInterPageSpacingKey: 20])
- self.pageViewController?.delegate = self
- self.pageViewController?.dataSource = self
- self.pageViewController?.automaticallyAdjustsScrollViewInsets = false;
- self.addChildViewController(self.pageViewController!)
- self.pageViewController?.didMove(toParentViewController: self)
- self.pageContentView.addSubview(self.pageViewController!.view)
- self.pageViewController?.view.frame = CGRect(x: 0, y: 0, width: pageContentView.frame.size.width, height: pageContentView.frame.size.height)
- self.pageViewController?.view.autoresizingMask = [.flexibleWidth, .flexibleHeight, .flexibleTopMargin, .flexibleLeftMargin, .flexibleRightMargin, .flexibleBottomMargin]
- for i in 0..<10 {
- let schedules = [
- "date": "2016/11/" + String(21 + i),
- "schedule": [
- ScheduleTime(startTime: 10, endTime: 11),
- ScheduleTime(startTime: 13, endTime: 14),
- ScheduleTime(startTime: 13.5, endTime: 14.5),
- ScheduleTime(startTime: 13.5, endTime: 14.5),
- ScheduleTime(startTime: 13.5, endTime: 14.5),
- ScheduleTime(startTime: 12.5, endTime: 15.5)
- // ScheduleTime(startTime: 10.5, endTime: 17.5)
- ]
- ] as [String : Any]
- allSchedules.append(schedules)
- }
- gotoPage(0)
- }
- func gotoPage(_ page: Int, animated: Bool = false) {
- if page >= 0 && page < allSchedules.count {
- let schedules = allSchedules[page]
- if let dateString = schedules["date"] as? String {
- self.currentDateLabel.text = dateString
- }
- if let scheduleTimes = schedules["schedule"] as? [ScheduleTime] {
- let viewController = DailyScheduleViewController(withSchedules: scheduleTimes)
- viewController.pageIndex = page
- self.pageViewController?.setViewControllers([viewController], direction: .forward, animated: animated, completion: nil)
- }
- }
- }
- func getPage(_ page: Int) -> DailyScheduleViewController? {
- if page >= 0 && page < allSchedules.count {
- let schedules = allSchedules[page]
- if let scheduleTimes = schedules["schedule"] as? [ScheduleTime] {
- let viewController = DailyScheduleViewController(withSchedules: scheduleTimes)
- viewController.pageIndex = page
- return viewController
- }
- }
- return nil
- }
- @IBAction func onPreviousDayClicked(_ sender: Any) {
- if let controllers = self.pageViewController?.viewControllers {
- if controllers.count > 0 {
- if let dailyController = controllers[0] as? DailyScheduleViewController {
- let pageIndex = dailyController.pageIndex
- if pageIndex > 0 {
- gotoPage(pageIndex - 1, animated: true)
- }
- }
- }
- }
- }
- @IBAction func onNextDayClicked(_ sender: Any) {
- if let controllers = self.pageViewController?.viewControllers {
- if controllers.count > 0 {
- if let dailyController = controllers[0] as? DailyScheduleViewController {
- let pageIndex = dailyController.pageIndex
- if pageIndex < allSchedules.count - 1 {
- gotoPage(pageIndex + 1, animated: true)
- }
- }
- }
- }
- }
- }
- extension ScheduleViewController: UIPageViewControllerDelegate, UIPageViewControllerDataSource {
- func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore viewController: UIViewController) -> UIViewController? {
- if let currentPageController = viewController as? DailyScheduleViewController {
- let pageIndex = currentPageController.pageIndex
- if pageIndex > 0 {
- return getPage(pageIndex - 1)
- }
- }
- return nil
- }
- func pageViewController(_ pageViewController: UIPageViewController, viewControllerAfter viewController: UIViewController) -> UIViewController? {
- if let currentPageController = viewController as? DailyScheduleViewController {
- let pageIndex = currentPageController.pageIndex
- if pageIndex < allSchedules.count - 1 {
- return getPage(pageIndex + 1)
- }
- }
- return nil
- }
- func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
- if let controllers = pageViewController.viewControllers {
- if controllers.count > 0 {
- if let dailyController = controllers[0] as? DailyScheduleViewController {
- let page = dailyController.pageIndex
- if page >= 0 && page < allSchedules.count {
- let schedules = allSchedules[page]
- if let dateString = schedules["date"] as? String {
- self.currentDateLabel.text = dateString
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment