ViewController不确认协议UITableViewDataSource

时间:2014-10-08 10:49:45

标签: ios uitableview swift

我做得很好,但仍显示错误“ViewController无法确认协议” 我在这个网站上搜索了很多我发现同样的问题,但没有找到任何正确的答案 我已经将UITableView的连接添加到UITableViewDelegate和UITableViewDataSource,但仍然显示错误我该怎么办

这是我的代码

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

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

@IBOutlet var tableView: UITableView!


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

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

    let cell:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "mycell")
    cell.textLabel.text="row#\(indexPath.row)"
    cell.detailTextLabel.text="subtitle#\(indexPath.row)"

    return cell

}



}

2 个答案:

答案 0 :(得分:1)

请注意删除委托方法中的!这里是错误的。

class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

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

@IBOutlet var tableView: UITableView!


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

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

    let cell:UITableViewCell=UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "mycell")
    cell.textLabel.text="row#\(indexPath.row)"
    cell.detailTextLabel.text="subtitle#\(indexPath.row)"

    return cell

}



}

答案 1 :(得分:0)

您在cellForRowAtIndexPath方法的代码上有其他错误。

UITableViewCell.textLabel和UITableViewCell.detailTextLabel返回可选的UILabel,因此您需要先解开它们(意味着在选项后添加!)。所以改变这两行如下,你就是好的。

cell.textLabel!.text="row#\(indexPath.row)"
cell.detailTextLabel!.text="subtitle#\(indexPath.row)"

此外,cellForRowAtIndexPath的方法签名是错误的。除掉 !在最后一个UITableViewCell上。应该是这样的:

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