我使用swift添加一个UITableview(没有storyboard),但是发生了一个错误,我不知道为什么
错误是
2015-06-26 11:08:14.149 test [62289:4994907] ***断言失败 - [UITableView dequeueReusableCellWithIdentifier:forIndexPath:],/ SourceCache / UIKit_Sim / UIKit-3347.44 / UITableView.m:6245
2015-06-26 11:08:14.152 test [62289:4994907] ***由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:'无法使用标识符TextCell对单元格出列 - 必须注册一个笔尖或一个标识符的类或连接故事板'
中的原型单元格
我不知道该怎么弄清楚
来源是:
import UIKit
class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
let swiftBlogs = ["a","b","c","d"]
let textCellIndetifier = "TextCell"
var t = UITableView()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
t.frame = self.view.frame
self.view.addSubview(t)
t.delegate = self
t.dataSource = self
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return swiftBlogs.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = t.dequeueReusableCellWithIdentifier(textCellIndetifier, forIndexPath: indexPath) as! UITableViewCell
let row = indexPath.row
cell.textLabel?.text = swiftBlogs[row]
return cell
}
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
t.deselectRowAtIndexPath(indexPath, animated: true)
let row = indexPath.row
println(swiftBlogs[row])
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
答案 0 :(得分:7)
您需要注册正在使用的单元格,因为您没有故事板,您需要在XIB文件中创建UITableViewCell元素。
override func ViewDidLoad(){
super.viewDidLoad()
self.tableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "TextCell")
}