ViewController不符合协议';UITableViewDataSource';

ViewController不符合协议';UITableViewDataSource';,uitableview,ios7,swift,xcode6,Uitableview,Ios7,Swift,Xcode6,这个问题被问了好几次 http://stackoverflow.com/questions/25581780/type-viewcontroller-does-not-confirm-to-protocol-uitableviewdatasource 我确实尝试了那里提供的解决方案,但仍然无法摆脱这个错误。UITableView的代码如下所示 import UIKit class ViewController: UIViewController, UITableViewDataSource

这个问题被问了好几次

http://stackoverflow.com/questions/25581780/type-viewcontroller-does-not-confirm-to-protocol-uitableviewdatasource 
我确实尝试了那里提供的解决方案,但仍然无法摆脱这个错误。UITableView的代码如下所示

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
{
    @IBOutlet var tableView: UITableView!
    var data: [String] = ["one","two","three","four"]

    override func viewDidLoad()
    {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
    }

    func numberOfSectionsInTableView(tableView: UITableView) -> Int
    {
        return 1
    }

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

    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath!)
    {
        println("You clicked cell number #\(indexPath.row)!")
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath!) ->  UITableViewCell!
    {
        var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
        cell.textLabel?.text = self.data[indexPath.row]
        return cell
    }
    override func didReceiveMemoryWarning()
    {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

请告诉我我在这里犯了什么错误。

尝试此操作,只需删除节中的函数
numberofrowsin
cellforrowsatindexpath
,然后再次添加此函数,如下所示:

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

    return self.data.count
}

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

var cell:UITableViewCell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
    cell.textLabel?.text = self.data[indexPath.row]
    return cell
}

这对我很有用。

以下代码在iOS 8.1上对我不起作用。在XCode 6.1.1中。此代码适用于:

import UIKit

class ViewController : UIViewController,UITableViewDelegate,UITableViewDataSource {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
        //currently only a testing number
        return 25
    }

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

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


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

请在最后一个}之前确认所有tableview所需的方法。像

类ViewController:UIViewController、UITableViewDataSource、UITableViewDelegate{

var data: [String] = ["one","two","three","four"]

override func viewDidLoad() {
    super.viewDidLoad()
    self.loadTableView()
    // 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.
}

func loadTableView() {
var tableObj:UITableView=UITableView()
    tableObj=UITableView(frame: UIScreen.mainScreen().bounds, style: UITableViewStyle.Plain)
    tableObj.delegate=self;
    tableObj.dataSource=self;
    self.view.addSubview(tableObj)
}
//标记:-表视图数据源

func numberOfSectionsInTableView(tableView:UITableView)->Int{ 返回1 }

func tableView(tableView:UITableView,numberofrowsinssection:Int)->Int{ 返回数据.count }

func tableView(tableView:UITableView,titleForHeaderInSection:Int)->String{ 返回“第(节)” }

func tableView(tableView:UITableView,cellForRowAtIndexPath:nsindepath)->UITableView单元格{ 变量单元格:UITableViewCell=UITableViewCell(样式:UITableViewCellStyle.Subtitle,reuseIdentifier:“mycell”)

}


}

它看起来不像
tableView
曾经将其
数据源
委托
设置为
self
我在视图控制器和表视图之间建立了连接,将其委托设置为self。
var nameLabel:UILabel = UILabel(frame: CGRect(x: 50,y: 5,width: 200,height: 30))
nameLabel.text="Title\(indexPath.row)"
nameLabel.textColor=UIColor.brownColor()
nameLabel.font=UIFont.boldSystemFontOfSize(15)
nameLabel.textAlignment=NSTextAlignment.Left
cell.contentView.addSubview(nameLabel)

var imageView:UIImageView=UIImageView(frame: CGRect(x: 5,y: 2,width: 40,height: 40))
imageView.backgroundColor=UIColor.purpleColor()
imageView.layer.masksToBounds=true
imageView.layer.cornerRadius=imageView.frame.width/2

cell.contentView.addSubview(imageView)
return cell