类型“ViewController”不符合协议'UITableViewDataSource'

时间:2016-01-14 08:16:17

标签: ios swift

我在编码时遇到错误,说

  

类型“ViewController”不符合协议“UITableViewDataSource”

有人能告诉我这里出了什么问题吗?

import UIKit

class ViewController: UIViewController, UITableViewDataSource{

    let devCourses = [
        ("Math"),
        ("Science"),
        ("English"),
        ("Computer Programming"),
        ("Physics")]
    func numberOfSectionsInTableview(tableview: UITableView)-> Int {
        return 1
    }
    func tableview(tableView: UITableView, numberOfRowsInSection section: Int) ->Int{
         return devCourses.count
    }
    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = UITableViewCell()

        let (courseTitle) = devCourses[indexPath.row]

        cell.textLabel?.text = courseTitle
        return cell
    }

    override func viewDidLoad() {
        super.viewDidLoad()

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

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

2 个答案:

答案 0 :(得分:3)

我认为你缺少委托所要求的一些功能:

声明应更改为包括:

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

然后确保表的所有必需方法都在那里:

func tableView(tableView:UITableView!, numberOfRowsInSection section:Int) -> Int

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

并在ViewDidLoad

上调用委托
override func viewDidLoad() {
    super.viewDidLoad()

      yourtableview.dataSource = self

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

希望这有帮助

答案 1 :(得分:3)

这是一个常见错误,请确保使用正确的字词。在你的情况下应该是:

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
     return devCourses.count
}

func tableview(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return devCourses.count
}

您必须使用 V iew 而不是 v iew 。区分大小写