【问题标题】:What is the appropriate UITableView delegation strategy for this situation?这种情况下合适的 UITableView 委托策略是什么?
【发布时间】:2012-06-25 20:17:04
【问题描述】:

我有一个 UITableView,我想要 UITableViewController 中内置的所有功能,除了我想让委托是一个单独的类。问题是我需要从我的数据源中提取一条识别信息,以便我的委托类能够运行。我应该让 UITableView 委托给 UITableViewController,然后它会提取适当的识别信息,然后从 didSelectRowAtIndexPath 中调用第三个类吗?我只是想以适当的方式构建它。

我对 iOS 和 Objective-C 还很陌生,所以我觉得有一个每个人都会使用的解决方案,但对我来说并不明显。

【问题讨论】:

    标签: objective-c cocoa-touch ios5


    【解决方案1】:

    我会让委托和数据源都指向您的自定义类。在一个地方管理表格视图事件会更容易,而且你真的不需要 UITableViewController。如果将它们分开,委托和数据源之间很可能会出现严重耦合,因为听起来您需要在它们之间传输大量信息,这违背了将它们分成单独类的目的。

    【讨论】:

    • 请注意,某些表格视图功能只有在您明确使用 UITableViewController(例如静态单元格)时才可用
    • @Lvsti 我不知道,在什么情况下你是指静态单元格?
    • 如果您使用界面生成器,从 iOS 5 开始,您可以使用静态内容预填充表格,但前提是您的视图控制器是 UITableViewController 子类。参见例如stackoverflow.com/questions/8639780/…
    • @Lvsti 哦,我根本不使用 IB,所以这是有道理的
    • 问题是它们之间几乎没有任何信息传递。我只是想从行索引切换到字符串标识符,因为委托类将无法解释索引。感谢您的所有回复!
    【解决方案2】:

    当我在同一个 UIViewController 中有两个表视图并且可以满足您的需求时,我通常使用的一种策略是为每个表视图创建一个对象类,例如:MyFirstTableViewManager 和 MySecondTableViewManager。

    每个表视图管理器都设置为每个表视图的委托和数据源。

    如果我需要在每个 tableview 上显示大量信息,我会在我从 UIViewController 设置的每个 Table View Manager 类上创建属性。

    通过这种方式,我拆分了管理每个表视图的逻辑以使其更容易并保持整洁,并且从我的 UIViewController 我可以通过设置每个表视图管理器属性来设置要在每个表视图上显示的信息,并使它们重新加载其需要时提供数据。

    希望对你有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-12-18
      • 1970-01-01
      • 2011-03-01
      • 2012-06-08
      • 1970-01-01
      • 2023-03-11
      • 2013-04-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多