如何创建具有 UITableView 的基础 ViewController class?

How to create a base ViewController class that has a UITableView?

我有几个视图控制器,都使用 UITableView,具有相同的自定义单元格。 UITableView 数据源方法也相同(到该行);所有变化都是数据源本身(从中加载 table 视图的数组)。必须为 5 个这样的视图控制器复制完全相同的代码对我来说似乎是多余的(更不用说这是一种糟糕的编码习惯!)。

因此,我想创建一个扩展 UIViewController 的基础(或父)视图控制器,并让我的所有后续(子)控制器继承自该基础视图控制器。

我的问题是:我的基础视图控制器需要有一个 UITableView 属性,它还包含 DataSource 方法。我无法让子视图控制器中的 UITableViews 引用父 class 的数据源。

我走错路了吗?有没有更好的方法来解决这个问题?非常感谢任何帮助!

只有一个控制器,您可以在其中添加一个 属性 作为数据源。

当您连接到控制器或创建它时设置数据源 属性。

如果除数据源数组外所有代码都相同,则只需要一个控制器。

在xcode中添加一个新的源文件:例如MyDataViewerController 继承了 UITableViewController.

在创建的文件中,添加一个 属性 形式:

@property NSArray *dataSource;

单击情节提要中的一个视图控制器,然后单击 Class 属性检查器选项卡。将 class 设置为 MyDataViewerController

您现在可以使用此控制器显示您的任何数据。您可能可以删除所有其他的。

我假设它是一个包含数据的数组。将其替换为您使用的任何内容。

假设你从某个地方转到这个控制器,在 prepareForSegue 函数中设置 属性。