【发布时间】:2017-11-25 10:04:41
【问题描述】:
我正在创建一个表格视图,当单元格数量增加或减少时,它的高度会动态变化。为了完成这个,我在我的 tableview 中添加了一个观察者:
tableView.addObserver(self, forKeyPath: "contentSize", options: .new, context: nil)
我通过以下方法收到这个:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
tableView.frame = CGRect(x: tableView.frame.origin.x, y: tableView.frame.origin.y, width: tableView.frame.size.width, height: tableView.contentSize.height)
tableView.reloadData()
}
但是,当我运行它时,我得到一个错误:
Thread 1: EXC_BAD_ACCESS (code=2, address=0x7ffeed414ff8)
我确定这些行会导致错误并且已经尝试调用super.observeValue(...)
任何帮助将不胜感激。
【问题讨论】:
-
你为什么要这样做? tableviews 的高度是容器在屏幕上的高度,它的 contentSize.height 是它正在滚动的内容的高度。当这两个值相等时,您的表格将不会滚动。
标签: ios swift uitableview tableview observers