title: Cannot convert value of type 'ViewController.Type' to expected argument type 'UIViewController'
body: <p>I have analyzed <strong><a href="https://stackoverflow.com/questions/45331626/cannot-convert-value-of-type-viewcontroller-type-to-expected-argument-type-ui">This</a></strong> question already but it is about <code>alertController</code>
  What actually I am doing is that, I am working with <code>ContainerViews</code> to a <code>MasterVC</code>. I am following this <strong><a href="https://cocoacasts.com/managing-view-controllers-with-container-view-controllers/" rel="nofollow noreferrer">Tutorial</a></strong>. 
  When I am coming to <code>updateView()</code> function and adding or removing the controllers on these lines I am facing this error.</p>
  
  <blockquote>
    <p>Cannot convert value of type 'ViewController.Type' to expected argument type 'UIViewController'</p>
  </blockquote>
  
  <p><a href="https://i.stack.imgur.com/qzKmm.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/qzKmm.png" alt="enter image description here"></a></p>
  
  <pre><code>import UIKit
  
  class MasterViewController: UIViewController {
  
  @IBAction func segmentcontrol(_ sender: Any) {
  }
  
  @IBOutlet weak var segmentedCont: UISegmentedControl!
  @IBOutlet weak var cancelMaster: UIBarButtonItem!
  
  @IBAction func cancelMasterAct(_ sender: Any) {
  }
  
  @IBOutlet weak var createMaster: UIBarButtonItem!
  
  @IBAction func createMasterAct(_ sender: Any) {
  }
  
  
  func setupView() {
      setupSegmentedControl()
  
      updateView()
  }
  private func setupSegmentedControl() {
  
     //  Configure Segmented Control
  
      segmentedCont.removeAllSegments()
      segmentedCont.insertSegment(withTitle: "Instock", at: 0, animated: false)
      segmentedCont.insertSegment(withTitle: "Checkin", at: 1, animated: false)
      segmentedCont.insertSegment(withTitle: "Inspection", at: 2, animated: false)
      segmentedCont.insertSegment(withTitle: "Checkout", at: 3, animated: false)
      segmentedCont.addTarget(self, action: #selector(selectionDidChange(_:)), for: .valueChanged)
      // Select First Segment
      segmentedCont.selectedSegmentIndex = 0
  
  
  }
  
  @objc func selectionDidChange(_ sender: UISegmentedControl) {
      updateView()
  }
  
  private func updateView() {
  
  
      if segmentedCont.selectedSegmentIndex == 0 {
          remove(asChildViewController: CheckinViewController)
          remove(asChildViewController: CheckoutViewController)
          remove(asChildViewController: InspectionViewController)
          add(asChildViewController: InstockViewController)
      }
      if segmentedCont.selectedSegmentIndex == 1 {
          remove(asChildViewController: InstockViewController)
          remove(asChildViewController: CheckinViewController)
          remove(asChildViewController: InspectionViewController)
          add(asChildViewController: CheckinViewController)
      }
      if segmentedCont.selectedSegmentIndex == 2 {
          remove(asChildViewController: InstockViewController)
          remove(asChildViewController: CheckoutViewController)
          remove(asChildViewController: CheckinViewController)
          add(asChildViewController: InspectionViewController)
  
      }
  
      else {
              remove(asChildViewController: InstockViewController)
              remove(asChildViewController: CheckinViewController)
              remove(asChildViewController: InspectionViewController)
              add(asChildViewController: CheckoutViewController)
      }
  
  }
  
  
  private func add(asChildViewController viewController: UIViewController) {
      // Add Child View Controller
      addChildViewController(viewController)
  
      // Add Child View as Subview
      view.addSubview(viewController.view)
  
      // Configure Child View
      viewController.view.frame = view.bounds
      viewController.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
  
      // Notify Child View Controller
      viewController.didMove(toParentViewController: self)
  }
  
  private lazy var CheckinViewController : CheckinViewController = {
      // Load Storyboard
      let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
  
      // Instantiate View Controller
      var viewController = storyboard.instantiateViewController(withIdentifier: "CheckinViewController") as! CheckinViewController
  
      // Add View Controller as Child View Controller
      self.add(asChildViewController: viewController)
  
      return viewController
  }()
  
  private lazy var  InstcokViewController : InstockViewController = {
      // Load Storyboard
      let storyboard = UIStoryboard(name : "Main", bundle: Bundle.main)
  
      // Instantiate View Controller
      var viewController = storyboard.instantiateViewController(withIdentifier: "InstockViewController") as! InstockViewController
  
      // Add View Controller as Child View Controller
      self.add(asChildViewController: viewController)
  
      return viewController
  }()
  
  
  
  private func remove(asChildViewController viewController: UIViewController) {
      // Notify Child View Controller
      viewController.willMove(toParentViewController: nil)
  
      // Remove Child View From Superview
      viewController.view.removeFromSuperview()
  
      // Notify Child View Controller
      viewController.removeFromParentViewController()
  }
  
  override func viewDidLoad() {
  
      super.viewDidLoad()
      self.setupView()
      print("MasterVC Printed")
      self.view.addSubview(segmentedCont)
      navigationController?.navigationBar.barTintColor = UIColor(red:0.00, green:0.52, blue:1.00, alpha:1.0)
      navigationController?.navigationBar.tintColor = UIColor.white
  
      segmentedCont.tintColor = UIColor.black
  
  }
  
  override func didReceiveMemoryWarning() {
      super.didReceiveMemoryWarning()
  }
  }
  </code></pre>