请参阅下面的代码,在Xcode 6.1中运行IOS 8失败,它报告错误如下: 输入" ViewController"不符合Protocol" UITableViewDataSource"
任何人都可以帮忙看看问题是什么?谢谢!
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var tableView = UITableView()
var items: NSMutableArray = ["row 0","row 1","row 2","row 3","row 4"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
tableView.frame = CGRectMake(10, 10, 300, 530)
tableView.backgroundColor = UIColor(red: 90/255, green: 31/255, blue: 10/255, alpha: 0.2)
// tableView.style = UITableViewStyle.Grouped
tableView.rowHeight = 50
tableView.separatorColor = UIColor.blueColor()
tableView.separatorStyle = UITableViewCellSeparatorStyle.SingleLine
//self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
// tableView.delegate = self
// tableView.dataSource = self
self.view.addSubview(tableView)
}
//UITableViewDataSource
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.items.count
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
//println("Hello \(indexPath.row)")
var cell = tableView.dequeueReusableCellWithIdentifier("my cell id") as? UITableViewCell
if (cell == nil) {
cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "my cell id")
}
//cell.textLabel?.text = listOfViewControllers[indexPath.row]
//cell!.textLabel?.text = items[indexPath.row] as String
//var s = items.objectAtIndex(indexPath.row) as? String
var s = items.objectAtIndex(indexPath.row) as String
cell!.textLabel?.text = s
return cell
}
//UITableViewDelegate
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath){
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
答案 0 :(得分:0)
问题在于此方法签名,它与UITableViewDataSource
中定义的方法不相似func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!
将其更改为:
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell