我一直在寻找一个体面的解决方案,但大多数似乎已经过时或不足。
我只是在我的UITableViewController中重用自定义的UITableViewHeaderFooterView而苦苦挣扎。
这是我的方法:
UITableViewHeaderFooterView
HeaderView
HeaderView
UITableViewController
' viewDidLoad()
tableView(_ tableView: UITableView, viewForHeaderInSection section: Int)
自定义HeaderView
类:
class HeaderView: UITableViewHeaderFooterView {
@IBOutlet weak var customLabel: UILabel!
}
在UITableViewController
课程中:
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UINib(nibName: "HeaderView", bundle: nil), forHeaderFooterViewReuseIdentifier: "Header")
}
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: "Header") as! HeaderView
headerView.customLabel.text = "This is a header section"
return headerView
}
这似乎是许多人建议的方法,但我相信我无法将笔尖的所有者自定义类正确设置为HeaderView
(UITableViewHeaderFooterView
)。当细胞出列时,我发生了致命的崩溃:
*** Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<NSObject 0x60000020ebe0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key customLabel.'
我绝对确定我已将UILabel正确连接到笔记IB中的文件所有者。
我尝试将HeaderView
类更改为UIView
,但是当强制UITableViewHeaderFooterView为UIView时,dequeueReusableHeaderFooterView(withIdentifier: "Header") as! HeaderView
会导致崩溃。
为什么会这样,目前解决这个问题的方法是什么?