我目前正在尝试实现相同的功能(创建一个超类以放置所有我的VC执行的自定义逻辑)。在我特定的情况下,我想使用Google Analytics的API跟踪屏幕视图,这应该在viewWillAppear中调用。这将要求我为每个视图控制器放置所需的任何代码。但是我发现了这个宝石:方法混合。感谢Mattt Thompson先生!如果您仔细阅读,您将发现您可以创建一个分类,其中您有能力替换给定选择器的现有实现。但是正如@duncan d所指出的那样,如果您只想扩展行为,则可以简单地创建一个常规类别。
如另一位评论者所说,UITableViewController是UIViewController上的一个相对简单的API。您可以从UIViewController开始,并将管理表视图所需的逻辑添加到自定义类中。但是,如果您不使用UITableViewController,则可能很难或不可能支持像静态表视图和单元格原型这样的UITableViewController支持的功能。另一种选择是创建UIViewController的类别,并将额外的方法添加到该类别中。类别方法可用于添加它们的类及其所有子类,几乎就像将方法添加到基类一样。但是,类别方法有一些限制。 您不能覆盖基类中的方法,只能添加新方法。 您不能在类别中添加实例变量。
UITableViewController
只是一个实现了UITableViewDateSource
和UITableViewDelegate
的UIViewController
。因此,您可以在自定义基础视图控制器中实现这些内容,而无需使用UITableViewController
。特别是如果您为UITableViewDateSource
创建自定义类作为数据源。 - rckoenes