class EmployeeViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var employees = [PFEmployee]()
var networking = Networking()
var plus: UIBarButtonItem!
var profile: UIBarButtonItem!
var tableView: UITableView = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(tableView)
tableView.delegate = self
tableView.dataSource = self
tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
tableView.setTranslatesAutoresizingMaskIntoConstraints(false)
self.view.addConstraint(NSLayoutConstraint(item: tableView, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.Height, multiplier: 1.0, constant: 0.0))
self.view.addConstraint(NSLayoutConstraint(item: tableView, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1.0, constant: 0.0))
self.view.addConstraint(NSLayoutConstraint(item: tableView, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1.0, constant: 0.0))
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return employees.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> CustomTableViewCell {
let cell: CustomTableViewCell! = CustomTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "customCell")
cell.nameLabel.text = employees[indexPath.row].name
cell.pointsLabel.text = employees[indexPath.row].numberOfPoints.toString()
cell.roleLabel.text = employees[indexPath.row].jobDesc
cell.commentaryLabel.text = employees[indexPath.row].commentary
return cell
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
出于某种原因,我遇到两个错误:
Cannot assign a value of type 'EmployeeViewController' to a value of type 'UITableViewDataSource?'
Type 'EmployeeViewController' does not conform to protocol 'UITableViewDataSource.'
我已经明确实施了所有必需的方法,所以我做错了什么?
答案 0 :(得分:1)
您的方法声明错误。改变这个:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> CustomTableViewCell {
到此:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
(您的方法必须返回UITableViewCell
,而不是CustomTableViewCell
。)这种隐式转换在Objective-C中是可以的,但在Swift中是不允许的,其中转换必须是显式的。
一些无关的事情:
var tableView: UITableView = UITableView()
可以只是let tableView = UITableView()
self.
。