键入" First View Controller"不符合协议" UITableViewDataSource"

时间:2014-12-09 05:01:26

标签: xcode protocols

所以我似乎无法摆脱这个错误..

我的代码是:

class FirstViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
    @IBOutlet var tblTasks: UITableView!

    //UITableViewDataSource
    func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int{
        return taskMgr.tasks.count
    }

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

        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "test")

        cell.textLabel!.text = taskMgr.tasks[indexPath.row].name
        cell.detailTextLabel!.text = taskMgr.tasks[indexPath.row].desc

        return cell
    }
}

我使用UITableViewDataSource所需的两个函数,所以我不确定为什么会一直收到此错误。

3 个答案:

答案 0 :(得分:3)

尝试更改方法签名,如下所述。注意会在输入参数中删除。

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

}

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

答案 1 :(得分:1)

每个方法的相应tableView参数都不应该是选项

答案 2 :(得分:0)

您需要实现两个必需的方法: tableView:numberOfRowsInSection tableView:cellForRowAtIndexPath

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

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellIdentifier = "cell"
    var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as UITableViewCell

    // information here

    return cell
}

如果您有自定义单元格,请仅更改de line:

var cell:MyCustomCell = self.tableView.dequeueReusableCellWithIdentifier(cellIdentifier) as MyCustomCell

希望它有所帮助!