请参阅下面的代码。我收到错误“类型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
}
}
答案 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: