【问题标题】:How to create a base ViewController class that has a UITableView?如何创建具有 UITableView 的基本 ViewController 类?
【发布时间】:2015-02-06 20:58:16
【问题描述】:

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

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

我的问题是:我的基本视图控制器需要有一个 UITableView 属性,并且它还包含 DataSource 方法。我无法让子视图控制器中的 UITableViews 为其 DataSource 引用父类。

我是在完全错误的轨道上吗?有没有更好的方法来解决这个问题?非常感谢任何帮助!

【问题讨论】:

    标签: ios objective-c iphone uitableview uiviewcontroller


    【解决方案1】:

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

    当您选择控制器或创建控制器时,请设置数据源属性。

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

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

    在创建该文件时,添加表单的属性:

    @property NSArray *dataSource;
    

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

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

    我假设它是一个包含数据的数组。用你使用的任何东西替换它。

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

    【讨论】:

    • 谢谢!我不敢相信我忽略了这一点;我以前做过很多次。我使用 3rd 方库来转换到这些视图而不是通常的 segues,这可能是我忽略它的原因。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 2011-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-01
    相关资源
    最近更新 更多