Skip to content

SegmentedControl with MultipleViewController

Mohammad Azmal Hossain edited this page Sep 19, 2017 · 1 revision

import Foundation import UIKit

class MyViewController: UIViewController {

let container = UIView()
 let vcGreen = GreenViewController()
  let vcOrang = OrangeViewController()
 let vcPurpleController = PurpleViewController()


override func viewDidLoad() {
    super.viewDidLoad()
    
    view.backgroundColor = .white
    
    setupSegmentedControl()
    
    container.frame = CGRect(x: 10, y: 120, width: self.view.frame.size.width - 20, height: 400)
    self.view.addSubview(container)
    
    container.backgroundColor = .yellow
    
    
    
   //grean vc
   
    self.addChildViewController(vcGreen)
    vcGreen.view.frame = CGRect(x: 10, y: 10, width: self.container.frame.size.width - 20, height: self.container.frame.size.height - 20)
    
    vcGreen.view.backgroundColor = .green
    
    self.container.addSubview(vcGreen.view)
    vcGreen.didMove(toParentViewController: self)
    
    
    // orange vc
   
    self.addChildViewController(vcOrang)
   vcOrang.view.frame = CGRect(x: 20, y: 20, width: self.container.frame.size.width - 40, height: self.container.frame.size.width)
    
self.container.addSubview(vcOrang.view)
    vcOrang.didMove(toParentViewController: self)
    
    
   
    self.addChildViewController(vcPurpleController)
    
    vcPurpleController.view.frame = CGRect(x: 30, y: 30, width: self.container.frame.size.width - 60, height: self.container.frame.size.height)
    vcPurpleController.view.backgroundColor = .purple
    self.container.addSubview(vcPurpleController.view)
    vcPurpleController.didMove(toParentViewController: self)
    
    
    
    
}


func setupSegmentedControl(){
    
    let mySegmentedControl = UISegmentedControl(items: ["Green", "Orange", "Purple"])
    mySegmentedControl.frame = CGRect(x: 20, y: 80, width: self.view.frame.size.width - 40, height: 30)
    mySegmentedControl.selectedSegmentIndex = 2
    mySegmentedControl.tintColor = .magenta
    mySegmentedControl.backgroundColor = .white
    
    mySegmentedControl.addTarget(self, action: #selector(mySegmentedControlClick(_:)), for: .valueChanged)
    
    self.view.addSubview(mySegmentedControl)
    
}

func mySegmentedControlClick(_ sender: UISegmentedControl!){
    
    if sender.selectedSegmentIndex == 0 {
        UIView.animate(withDuration: 0.5, animations: {
            self.vcGreen.view.isHidden = false
            self.vcOrang.view.isHidden = true
            self.vcPurpleController.view.isHidden = true
        })
        
    } else if sender.selectedSegmentIndex == 1 {
        UIView.animate(withDuration: 0.5, animations: {
            
            
            self.vcGreen.view.isHidden = true
            self.vcOrang.view.isHidden = false
            self.vcPurpleController.view.isHidden = true
        })
    } else if sender.selectedSegmentIndex == 2 {
        UIView.animate(withDuration: 0.5, animations: {
            self.vcGreen.view.isHidden = true
            self.vcOrang.view.isHidden = true
            self.vcPurpleController.view.isHidden = false
        })
        
    }
}

}

class GreenViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    
    
    
}

}

class OrangeViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    
    
    view.backgroundColor = .orange
    
}

}

class PurpleViewController: UIViewController {

override func viewDidLoad() {
    super.viewDidLoad()
    
  
    
}

}

Clone this wiki locally