按tableView
创建storyboard
,并在tableView delegate
方法中:tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
出现异常:
*** Assertion failure in -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:],
/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3599.6/UITableView.m:6593
我的代码如下:
ViewController11
@IBOutlet weak var tableView: UITableView! // tableView
// tableview delegate
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell_id: String = "cell_id"
// this line below occurs exception: Thread 1:breakpoint 5.2
var cell: TableViewCell2 = tableView.dequeueReusableCell(withIdentifier: cell_id, for: indexPath) as! TableViewCell2
if cell == nil {
//
}
var title = dataSource[indexPath.row]
cell.titlelabel?.text = String(title)
return cell
}
和storyboard
ViewController11
:
和xib
TableViewCell2
:
答案 0 :(得分:0)
您必须先从xib注册UITableViewCell
才能使用它:
斯威夫特2:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.registerNib(UINib(nibName: "TableViewCell2", bundle: NSBundle.mainBundle()), forCellReuseIdentifier: "cell_id")
}
斯威夫特3:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.register(UINib(nibName: "TableViewCell2", bundle: Bundle.main), forCellReuseIdentifier: "cell_id")
}