【发布时间】:2016-03-16 01:08:02
【问题描述】:
我有一个关于使用硬编码数据设置表格视图的问题。有时开发人员会遇到这样的情况:您需要显示不是从 DATA MODEL 层接收到的数据,而是存储为硬编码信息。
我的意思 例如,当您构建设置屏幕时,可能会有一些 UITableViewCell 像:
CustomTableViewCellName - 配置数据:占位符名称/姓氏、图标。
CustomTableViewCellPhone - 配置数据:电话占位符、图标。
CustomTableViewCellLogout - 配置数据:注销/退出文本、图标。
假设我有 3 个表格视图部分,每个部分包含 5 个不同的单元格,我在上面作为不同案例的示例进行了描述。
如果我们将在
中实现所有这些单元格- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
switch (indexPath.section)
..... A LOT OF CASES THAT CONFIGURE EACH CUSTOM CELLS
如您所见,没有 DATA MODEL 只有占位符和图标图像将作为标签、textviews 图像视图等的默认数据存储在 UITableViewCell 中。例如,我不会在这里谈论模型,而是谈论模型 USER存储用户名、姓氏等。我的意思是我需要在某处存储一些默认数据,也许在字典中。实际上占位符只是一个占位符,虽然它有一个 TEXT 并且 TEXT 是一个数据 =)
在这种情况下,我们有用于配置视图默认状态的数据和将用作模型 USER 的数据。
我担心我会有一个大的 Switch 和非常庞大的视图控制器。
我想创建一些方法来表示带有开关的部分,其中使用 indexPath.row:
- (UITableViewCell *)cellsForSection1:(NSIndexPath *)ip
- (UITableViewCell *)cellsForSection2:(NSIndexPath *)ip
- (UITableViewCell *)cellsForSection2:(NSIndexPath *)ip
并将这些方法移动到将为我返回一个单元格的交互器。我知道 Interactor 应该只准备数据并将其通过 Presenter 推送到 View。
也许我想多了一个问题。我只是不想在 VC 中有一个大的开关 =) 我知道没有正确的解决方案。但也许有人遇到过。
在我的例子中,数据是我想要在某处配置以防止视图控制器过载的默认单元格。是的,单元格是数据可能看起来很疯狂,但看看 ViewController 包含 1000 行配置代码cellForRowAtIndexPath 也很疯狂 =)
【问题讨论】:
-
你没有数据模型,但你有数据,你可以用它创建数据模型。
标签: ios objective-c uitableview viper-architecture