gpt4 book ai didi

swift - 不符合 UITableViewDataSource

转载 作者:行者123 更新时间:2023-11-28 07:05:26 26 4
gpt4 key购买 nike

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
}

出于某种原因,我收到两个错误:

  1. 无法将“EmployeeViewController”类型的值分配给“UITableViewDataSource”类型的值?
  2. 类型“EmployeeViewController”不符合协议(protocol)“UITableViewDataSource”。

我已经清楚地实现了所有需要的方法,那么我做错了什么?

最佳答案

你的方法声明是错误的。改变这个:

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. 可以删除。

关于swift - 不符合 UITableViewDataSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30770830/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com