1

我正在我的 UITableViewController 中创建功能,当用户点击某个单元格时,一个新的单元格会从带有输入视图(即选择器视图等)的磁带单元格下方滑出。

现在我可以在每个表视图控制器中一遍又一遍地创建此行为,但我想知道是否有一种方法可以创建表视图控制器的子类,自动构建此功能。我的想法将涉及创建一个新的协议委托方法,该方法要求委托返回给定 indexPath 的输入视图,然后我的子类将自动知道将 inputView 插入到被点击单元格下方的单元格中。

这种实现背后的想法是表视图是使用与表视图相同的数据源和委托方法构建的,唯一的区别是如果新的委托方法返回给定索引路径的输入视图,我会知道为点击的单元格提供该功能。

所以我的问题是,当通过子类化 UITableViewController 轻按单元格时,我将如何实现这种自动单元格插入(插入输入视图)?

我对 iOS 表格视图非常熟悉,只是不明白如何通过创建子类来扩展功能。任何帮助将不胜感激。

4

1 回答 1

0

如果这个答案超出了您已经熟悉的内容,请提前道歉 - 我不确定一个好的起点是什么。

因此,当我们谈论 iOS 上的表格时,我们有三个组件——它UITableView本身、thedelegate和 the datasource(我相信你已经知道所有这些了)。为了帮助我们,Apple 提供了一个UIViewController子类来管理表视图、委托和数据源 - UITableViewController.

您认为将“自动输入单元格插入”逻辑放在一个地方而不是UITableViewController在代码中使用的所有实例中复制它更清晰、更理智、更好,这显然是正确的。

但是,这是关键,delegateanddatasource方法不是的一部分UITableViewController——它们是UITableView. 听起来您真正想做的是将表视图子类化并扩展委托/数据源方法。

如果这令人困惑,请这样想:理想情况下,您希望改进的自动输入单元格插入,表格视图可以在任何地方工作- 表格视图不仅可以在表格视图控制器中使用,而且可以在任何视图控制器(或视图)中使用,并且委托方法不必控制器本身中实现。

因此,您可能想要做的是子类UITableView化,修改委托和数据源以支持您的新输入视图方法(如果您不确定扩展协议,请参阅此 SO 答案),然后 - 如果您愿意 - 创建一个UITableViewController默认情况下使用您的表视图子类的子类。

于 2013-06-21T18:57:47.940 回答