从头开始创建Xcode项目。选择单视图选项。放在视图上的tableview中。选择1个细胞原型。创建了一个小区标识符“cell”。添加了UITableViewDelegate和满足tableview协议所需的功能。 tableview链接到视图控制器。代码没有预运行错误或警告。但是,我收到了这个错误:
2016-10-15 07:50:29.622 LawDataNHC [5219:196567] *断言失败 in - [UITableView _configureCellForDisplay:forIndexPath:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3599.6/UITableView.m:8035 2016-10-15 07:50:29.650 LawDataNHC [5219:196567] * 终止应用 由于未捕获的异常'NSInternalInconsistencyException',原因: 'UITableView(; layer =; contentOffset:{0,0}; contentSize:{375,44}>)未能获得 来自其dataSource()的单元格 ***首先抛出调用堆栈:
材料表视图代码:
class ViewController: UIViewController, UITableViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
private func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .default, reuseIdentifier: "cell")
cell.textLabel?.text = "test"
return cell
}
答案 0 :(得分:1)
您已忘记在UITableViewDataSource
ViewController
命名
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
您的cellForRowAt
方法也不应该是私有的:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
最后尝试使用dequeueReusableCell
方法生成单元格,而不是使用UITableViewCell(style: .default, reuseIdentifier: "cell")
创建新单元格。
您的ViewController
课程应如下所示:
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
//let cell = UITableViewCell(style: .default, reuseIdentifier: "cell")
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = "test"
return cell
}
}
答案 1 :(得分:0)
您的代码返回nil tableView单元格尝试以下内容: 替换为它:
private func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")
cell.textLabel?.text = "test"
return cell
}