type viewcontroller不符合协议uitableviewdatasource

时间:2016-05-06 17:03:54

标签: ios uitableview tableviewcell

我已经在另一个视图中完成了相同的tableview,但在这个视图中无法工作。我也在寻找解决方案,但我不知道什么不起作用

类HistoryViewController:UIViewController,UITableViewDelegate,UITableViewDataSource {

@IBOutlet weak var tableview: UITableView!

var date = ["ciao", "muori"]
var place = ["aaaa"]



override func viewDidLoad() {
    super.viewDidLoad()

    tableview.dataSource = self
    tableview.delegate = self

    // Do any additional setup after loading the view.
}


override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

func tableView(tableView:UITableView, numberOfRowsInSection section:Int) -> Int
{
    return 1
}

func tableview(tableView: UITableView, cellForRowIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = self.tableview.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! HistoryCell
    cell.placeLabel.text = place[indexPath.row]
    cell.dateLabel.text = date[indexPath.row]
    return cell

}


func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{

}
有人可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

  • 转到问题导航器(⌘4)。
  • 打开错误消息旁边的显示三角形。
  • 实现错误消息下显示的缺少必需方法。

并使用代码完成来避免这些错别字。

答案 1 :(得分:1)

您在方法名称中犯了一个错误:您必须实施tableview:cellForRowIndexPath:而不是class HistoryViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var tableview: UITableView! var date = ["ciao", "muori"] var place = ["aaaa"] override func viewDidLoad() { super.viewDidLoad() tableview.dataSource = self tableview.delegate = self // Do any additional setup after loading the view. } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 1 } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = self.tableview.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! HistoryCell cell.placeLabel.text = place[indexPath.row] cell.dateLabel.text = date[indexPath.row] return cell } func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { } } 。这是一个正确的实现:

isOnline()

答案 2 :(得分:0)

请检查是否

func tableView(tableView: UITableView!, cellForRowAtIndexPath  indexPath: NSIndexPath) -> UITableViewCell

func tableView(tableView:UITableView, numberOfRowsInSection section:Int)

插入到{}括号内。