【问题标题】:Use TableView or TableViewController when I have Custom TableViewCell and want to do MVC [closed]当我有自定义 TableViewCell 并想做 MVC 时使用 TableView 或 TableViewController [关闭]
【发布时间】:2012-11-01 22:16:41
【问题描述】:
  1. 条件:我有一个自定义 TableViewCell,我以编程方式执行所有操作,没有 xib。
  2. 如果我想做一个MVC(拆分视图和动作),使用TableView还是使用Single TableViewController,哪个更适合MVC设计?
  3. 据我所知TableView只是一个UI视图,TableViewController可以包含一些逻辑。这是否意味着,如果我想要一个严格的 MVC 设计,我需要使用 TableView 和另一个 object-c 文件来处理 TableView 的逻辑,TableViewCell。

我在stackoverflow、google上搜索过这个,没有具体的答案,也没有很好的理解。

【问题讨论】:

    标签: ios model-view-controller uitableview tableview


    【解决方案1】:

    UITableViewCell 子类可以充当模型。它可以包含您在 UIView 中显示的视图。
    在 UITableViewCell 子类中创建一个方法,用于初始化数据并将其插入当前单元格的子视图中。
    在“tableView cellForRowAtIndexPath”方法中,您实例化您的 CustomCell 类。

    UITableViewController 和你自己创建的 UIViewController 一样,把 UITableView 放进去。它是 UIViewController 的子类,只是为了方便用户。并设置委托和数据源,而无需您设置它们。

    【讨论】:

    • 谢谢你的话。阅读您的答案后,我认为自定义表格视图与自定义表格视图单元格相同。也就是说,如果有人要自定义一个tableview,他需要自定义一个tableviewcell,并在cellForRowAtIndexPath中实例化tableviewcell
    • 对不起,UITableViewCell 是一个视图类,它继承自 UIView。您确实会在其中呈现视图,例如标签或图像。我也不明白关于 UITableViewController 的断言“它是 UIViewController 的子类只是为了用户的方便”?它是一个成熟的视图控制器。
    • 同意你关于第一部分的看法,我将对其进行编辑。但关于 UIViewController 我不同意。您可以使用 TableView 的委托对 UIViewController 执行相同的操作,而无需 UITableViewController。
    【解决方案2】:

    我曾经养过

    1. 自定义“模型”对象,其中包含用户的用户名、城市和图像,假设在“User.h”和“User.m”类中
    2. 自定义“View”对象,其中包含两个用于显示名称和城市的 UILabel 和用于显示用户图片的 UIImageView,假设命名为“CellUser”
    3. 自定义“Controller”对象,可以包含 UITableView 的 datasource 和 datadelegate 方法,例如“UserViewController”,“UIViewController”的子类。

    可以根据项目的需要创建自定义UITableView类,假设当您需要在项目的一页以上显示相同的数据时。

    希望能帮助你理解!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-08
      • 1970-01-01
      相关资源
      最近更新 更多