为什么 `heightForRowAt` 在 `UITableViewDelegate` 而不是 `UITableViewDataSource` 中实现?

Why is `heightForRowAt` implemented in `UITableViewDelegate` and not `UITableViewDataSource`?

这个问题本质上更具教学意义,但为什么 heightForRowAtUITableViewDelegate 而不是 UITableViewDataSource 中实现?

UITableViewDataSource 中定义行高不是更有意义吗?

由于行的高度应该取决于该特定行的内容,因此扩展到数据源?

Tableview 是一个非常复杂的视图,作为一个视图,它必须是可重用的。这只有在 table 视图的某些方面留给其他 类 时才能实现。 table 视图使用两个 类 委托和数据源。

数据源负责table中需要显示的数据。此数据来自 MVC 范式中的模型对象。

代表负责 table 应该如何代表自己。尽管行高是一条数据,可能会让您认为它应该是数据源的一种方法,但行高设置了 table 视图的布局项,因此设置了table 查看。

因此 heightForRowAt 是委托方法而不是数据源方法。

亲切的问候, MacUserT