无法将'ViewController.Type'类型的值转换为预期的参数类型'UIViewController'

时间:2018-03-03 07:37:14

标签: ios swift types uicontainerview

我已经分析了 This 问题,但问题是alertController 我实际上在做的是,我正在与ContainerViews合作MasterVC。我正在关注 Tutorial 。 当我来updateView()功能并在这些行上添加或删除控制器时,我遇到了这个错误。

  

无法将'ViewController.Type'类型的值转换为预期的参数类型'UIViewController'

enter image description here

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()
}
}

0 个答案:

没有答案