summaryrefslogtreecommitdiff
path: root/SmartDeviceLink-ExampleSwift/ConnectionContainerViewController.swift
blob: f63ac86c3fa20be33afd1d376a2212122b026361 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
//
//  ConnectionContainerViewController.swift
//  SmartDeviceLink-ExampleSwift
//
//  Copyright © 2017 smartdevicelink. All rights reserved.
//
import UIKit

class ConnectionContainerViewController: UIViewController {

    @IBOutlet weak var segmentedControl: UISegmentedControl!
    var viewControllers: [UIViewController] = []
    var currentViewController: UIViewController?

    override func viewDidLoad() {
        super.viewDidLoad()

        navigationController?.navigationBar.isTranslucent = false
        let tcpControllerStoryboard = UIStoryboard(name: "ConnectionTCPTableViewController", bundle: nil)
        let iapControllerStoryboard = UIStoryboard(name: "ConnectionIAPTableViewController", bundle: nil)
        let tcpController = tcpControllerStoryboard.instantiateViewController(withIdentifier :"ConnectionTCPTableViewController")
        let iapController = iapControllerStoryboard.instantiateViewController(withIdentifier :"ConnectionIAPTableViewController")
        viewControllers.append(tcpController)
        viewControllers.append(iapController)

        segmentedControl.selectedSegmentIndex = 0
        loadChildViewController(index: 0)

        let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(slideToLeftWithGestureRecognizer(gestureRecognizer:)))
        let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(slideToRightWithGestureRecognizer(gestureRecognizer:)))
        leftSwipe.direction = .left
        rightSwipe.direction = .right
        view.addGestureRecognizer(leftSwipe)
        view.addGestureRecognizer(rightSwipe)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    @IBAction func slideToLeftWithGestureRecognizer(gestureRecognizer: UISwipeGestureRecognizer) {
        if segmentedControl.selectedSegmentIndex == 0 {
            segmentedControl.selectedSegmentIndex = 1
            removeFromView()
            loadChildViewController(index: 1)
        }
    }
    
    @IBAction func slideToRightWithGestureRecognizer(gestureRecognizer: UISwipeGestureRecognizer) {
        if segmentedControl.selectedSegmentIndex == 1 {
            segmentedControl.selectedSegmentIndex = 0
            removeFromView()
            loadChildViewController(index: 0)
        }
    }
    // Grab changes in segmentedControl
    @IBAction func indexChanged(_ sender: AnyObject) {
        switch segmentedControl.selectedSegmentIndex {
        case 0:
            removeFromView()
            loadChildViewController(index: 0)
        case 1:
            removeFromView()
            loadChildViewController(index: 1)
        default:
            break
        }
    }
    // Mark: - View functions
    func removeFromView() {
        let vc = self.childViewControllers.last
        vc?.view.removeFromSuperview()
        vc?.removeFromParentViewController()
    }

    func loadChildViewController(index: Int?) {
        let initialViewController: UIViewController = viewControllers[index!] as! UIViewController
        self.addChildViewController(initialViewController)
        view.addSubview(initialViewController.view)
        initialViewController.didMove(toParentViewController: self)
    }
}