如何创建UITableViewController的子类来扩展功能?

时间:2013-06-21 18:23:59

标签: iphone ios objective-c uitableview

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

如果这个答案超出你已经熟悉的东西,请提前道歉 - 我不确定这是一个好的起点。

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

你显然认为将“自动输入单元格插入”逻辑集中在一个地方,而不是在你在你的所有UITableViewController个实例中复制它,这显然是正确的。代码。

然而,这是关键,delegatedatasource方法不是 UITableViewController的一部分 - 他们是UITableView的一部分。听起来好像你真正想做的是将表视图扩展委托/数据源方法子类化。

如果这让人感到困惑,请按照这种方式考虑:理想情况下,您希望改进的自动输入单元格插入,表格视图在任何地方工作 - 表格视图不仅可以用于表格视图控制器,还可以用于在任何视图控制器(或视图)中,委托方法都没有在控制器本身中实现。

所以你可能想做的是子类UITableView,修改委托和数据源以支持你的新输入视图方法(if you're not sure about extending protocols, see this SO answer),然后 - 如果你愿意 - 创建一个{ {1}}默认情况下使用表视图子类的子类。