初始化UIViewController子类错误

时间:2015-11-18 14:03:11

标签: swift2

我正在学习Swift,我遇到了编译错误:

class ListScansVC: UIViewController {

  @IBOutlet weak var tableView: UITableView!
  internal var scans: [Scan]
  internal var dataSource: ListScanDataSource

  init(scans: [Scan]){
    self.scans = scans
    dataSource = ListScanDataSource.init(scans: scans)
    super.init(nibName: nil, bundle: nil)
  }

  required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
  }

  override func viewDidLoad() {
    super.viewDidLoad()
    dataSource.registerReusableViewsForTableView(tableView)
  }
}

在我正在做的另一个ViewController中:

override func viewDidLoad() {
    super.viewDidLoad()

    let scan = Scan(title : "Ticket", scanDate: NSDate())
    let listScanVC = ListScansVC.init(scans: [scan])

    self.displayChildContent(ListScansVC)
}

func displayChildContent(content : UIViewController){
    self.addChildViewController(content)
    self.view.addSubview(content.view)
    content.didMoveToParentViewController(self)
}

错误是: “无法将类型'ListScansVC.Type'的值转换为预期的参数类型'UIViewController'”

1 个答案:

答案 0 :(得分:0)

Swift中的init方法,如

init(scans :[Scan]){)

可以用

调用
let listScanVC = ListScansVC(scans: [scan])

在下一行中,您必须传递实例(以小写字母开头)而不是类型

self.displayChildContent(listScanVC)

我建议使用更多不同的名称来避免类型/实例混淆。