为什么`heightForRowAt`是在`UITableViewDelegate`中实现的,而不是在`UITableViewDataSource`中实现的? [已关闭]

问题描述 投票:0回答:1

这个问题本质上更具教学意义,但为什么

heightForRowAt
UITableViewDelegate
中实现,而不是在
UITableViewDataSource
中实现?

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

既然行的高度应该取决于该特定行的内容,因此也取决于数据源?

ios swift uitableview
1个回答
1
投票

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

数据源负责表格中需要显示的数据。该数据来自 MVC 范例中的模型对象。

委托负责表格应如何表示自身。尽管行的高度是一段数据,并且可能会让您认为它应该是数据源的一种方法,但行的高度设置了表视图的布局项,从而设置了表视图的表示形式。

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

© www.soinside.com 2019 - 2024. All rights reserved.