接收错误“类型ViewController不符合协议'UITableViewDataSource ...”即使我有所需的功能

时间:2016-05-18 22:03:52

标签: ios swift uitableview

请参阅下面的代码。我收到错误“类型ViewController不符合协议'UITableViewDataSource'”。我已经研究过这个错误,其他答案说UITableViewDataSource需要某些功能,但我已经包含了这些功能。还有什么可能是错的?我正在使用Xcode 7.3。

import UIKit

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet weak var zipCodeText: UITextField!
    @IBOutlet weak var zipTable: UITableView!

    var zipArray: [String] = []


    override func viewDidLoad() {
        super.viewDidLoad()
        self.zipTable.delegate = self
        self.zipTable.dataSource = self
    }

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

    @IBAction func addZipButton(sender: UIButton) {
        zipArray.append(zipCodeText.text!)
        zipTable.beginUpdates()
        zipTable.insertRowsAtIndexPaths([
            NSIndexPath(forRow: zipArray.count-1, inSection: 0)
            ], withRowAnimation: .Automatic)
        zipTable.endUpdates()
    }

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

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) {
        let cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell")!
        cell.textLabel?.text = zipCodeText.text
    }

}

1 个答案:

答案 0 :(得分:3)

您没有在tableView(_:cellForRowAtIndexPath:)返回您的单元格。

尝试这样的事情:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell")!
    cell.textLabel?.text = zipCodeText.text
    // Make sure to include the return statement
    return cell
}

在文档中,您将找到有关返回值的信息: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDataSource_Protocol/#//apple_ref/occ/intfm/UITableViewDataSource/tableView:cellForRowAtIndexPath