我正在学习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'”
答案 0 :(得分:0)
Swift中的init
方法,如
init(scans :[Scan]){)
可以用
调用let listScanVC = ListScansVC(scans: [scan])
在下一行中,您必须传递实例(以小写字母开头)而不是类型
self.displayChildContent(listScanVC)
我建议使用更多不同的名称来避免类型/实例混淆。