Search code examples
swiftxcodeswitch-statementuisegmentedcontrol

load UICollectionViewController in segmented control switch


I would like to implement a segmented controller that on switch loads a UICollectionViewController into view. In addition, I am also wondering how to get the app to show this UICollectionViewController on app ViewDidLoad method. See code below. Thanks in advance!

    var segmentedController: UISegmentedControl!

    override func viewDidLoad() {
        super.viewDidLoad()

        let items = ["Label A", "Label B"]
        segmentedController = UISegmentedControl(items: items)
        navigationItem.titleView = segmentedController

        segmentedController.selectedSegmentIndex = 0

        // function to handle Value Changed events
        segmentedController.addTarget(self, action: #selector(HomeController.segmentedValueChanged(_:)), for: .valueChanged)

    }

    // reference to collectionViewController
    var travelersFeedCollectionVC: UICollectionViewController!

    func segmentedValueChanged(_ sender:UISegmentedControl!)
    {
        print("Selected Segment Index is : \(sender.selectedSegmentIndex)")
        switch segmentedController.selectedSegmentIndex {
        case 0:
            self.view.isHidden = true
            // load travelersFeedCollectionVC here.............

        case 1:
            self.view.isHidden = false

        default: // Do nothing
            break
        }
    }

Solution

  • You can use container view technique. Basically you need to define the main container view. Insider the container view, you can easily show any view controller that you want. Please refer this tutorial to learn more about this technique. Link - https://guides.codepath.com/ios/Container-View-Controllers-Quickstart