我已经创建UITableViewController
编程在viewDidLoad()
编程方式创建的UITableViewController:与用户定义的细胞
resultsController = UITableViewController(style: UITableViewStyle.plain)
resultsController.tableView.register(MyTableCellTableViewCell.self, forCellReuseIdentifier: "userFoundCell")
resultsController.tableView.dataSource = self
resultsController.tableView.delegate = self
然而,当我后来做
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell: MyTableCellTableViewCell? = tableView.dequeueReusableCell(withIdentifier: "userFoundCell", for: indexPath) as? MyTableCellTableViewCell
if (cell == nil){
cell = MyTableCellTableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "userFoundCell")
}
cell!.lblTmp!.text = "test"
return cell!
}
cell
从来都不是零,我测试
代码崩溃:
fatal error: unexpectedly found nil while unwrapping an Optional value on cell!.lblTmp!.text = "test"
我MyTableCellTableViewCell
看起来像这样
class MyTableCellTableViewCell: UITableViewCell {
@IBOutlet var lblTmp: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
IBoutlet
连接在界面生成器到GUI元素。同一班级也在另一个地方使用。
@Sulthan它已连接。或者至少在我的第二张表中,这是使用相同的类,但是从IB入口,所有工作 –
你说标签已连接,但你也说你没有xib文件。既然你还没有使用storyboard,你究竟是如何定义'MyTableCellTableViewCell'的视图,以及你如何连接标签? – Sulthan
@Sulthan我有一个故事板 –