Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何创建UITableViewController的子类来扩展功能?_Iphone_Ios_Objective C_Uitableview - Fatal编程技术网

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

Iphone 如何创建UITableViewController的子类来扩展功能?,iphone,ios,objective-c,uitableview,Iphone,Ios,Objective C,Uitableview,我正在我的UITableViewController中创建一个功能,当用户点击某个单元格时,一个新的单元格将从录制的单元格下方滑出,并显示一个输入视图(即选择器视图等) 现在我可以在每个表视图控制器中一遍又一遍地创建这种行为,但我想知道是否有一种方法可以创建表视图控制器的一个子类,自动在这个功能中构建。我的想法是创建一个新的protocoldelegate方法,该方法要求委托为给定的indexPath返回一个输入视图,然后我的子类将自动知道如何将inputView插入到该单元格下面的单元格中 这

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

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

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

所以我的问题是,当一个单元格被子类化UITableViewController点击时,我如何实现这个自动单元格插入(插入一个输入视图)


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

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

因此,当我们讨论iOS上的表时,我们有三个组件:
UITableView
本身、
委托
,以及
数据源(我相信您已经知道所有这些)。为了帮助我们,苹果提供了一个管理表视图、委托和数据源的
UIViewController
子类,即
UITableViewController

显然,您认为将“自动输入单元格插入”逻辑放在一个位置比在代码中使用的所有
UITableViewController
实例中复制逻辑更清晰、更理智、更好,这是对的

但是,这是关键所在,
委托
数据源
方法不是
UITableView控制器
的一部分-它们是
UITableView
的一部分。听起来好像您真正想要做的是对表视图进行子类化并扩展委托/数据源方法

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


因此,您可能想做的是子类
UITableView
,修改委托和数据源以支持新的输入视图方法(),然后——如果愿意的话——创建一个默认使用表视图子类的
UITableViewController
子类。

您考虑过使用类别吗?很难说问题到底有多复杂,但我的第一反应是在UITableView类别中创建一些额外的方法,然后您可以从您使用的任何UITableView中引用这些方法。我希望做的是将此行为内置在其中,而不必真的执行任何其他指定输入视图的操作。我不确定分类在这种情况下有什么帮助。听起来是个有趣的答案。您能给我一个示例,说明如何截取数据源方法,将我的逻辑注入其中。因此,为了明确起见,我希望能够使用相同的数据源方法实现这个新的表视图类,我只是不确定如何“截取”要注入到我自己逻辑中的方法。