在Swift中没有确认协议UITableViewDataSource,为什么?

时间:2014-09-23 20:43:39

标签: objective-c xcode swift ios8

这是我的代码,编译器仍然显示错误,尽管我编写了两种方法的实现

请说明原因

导入UIKit

class FirstViewController: 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.
        }

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


        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
        }

    }

这是Xcode的截图 enter image description here

1 个答案:

答案 0 :(得分:2)

您可能已在先前版本的Xcode中编写此代码。 2种方法的正确签名已经改变,现在它已经改变了:

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

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

tableView参数不再是可选参数。