我对使用硬编码数据设置表格视图有疑问。有时开发人员需要显示收到的数据而不是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是一个data =)
在这种情况下,我们有配置默认状态视图和数据的数据,例如用作模型USER。
我担心的是我会有一个很大的Switch和非常庞大的视图控制器。
我想创建几个方法来表示带有使用indexPath.row的开关的部分:
- (UITableViewCell *)cellsForSection1:(NSIndexPath *)ip
- (UITableViewCell *)cellsForSection2:(NSIndexPath *)ip
- (UITableViewCell *)cellsForSection2:(NSIndexPath *)ip
并将这些方法移动到Interactor,它将为我返回一个单元格。我知道Interactor应该只准备数据并将它通过Presenter推送到View。
也许我在思考问题。我只是不想在VC中进行大转换=)我知道没有正确的解决方案。但也许有人面对它。
在我的情况下再一次,数据是我想要在某处配置以防止过载视图控制器的默认单元格。也许它看起来很疯狂,单元格是数据,但看看包含1000行代码的ViewController配置cellForRowAtIndexPath
也是疯狂=)
答案 0 :(得分:1)
如果您的数据是静态的,那么我宁愿使用枚举,而不是Switch案例。使用Enums并在其正文中为每个部分添加标记,然后在cellForRowAtIndexpath中枚举此枚举并相应地显示您的数据。
答案 1 :(得分:0)
考虑创建一个单独的类来充当你的tableview数据源,然后让你的视图控制器实例一个。这样你就可以避免使用过大的VC类,并且你的代码更易于单元测试。
答案 2 :(得分:0)
switch(model.id)
case cellKind1:
cell = [tableview dequeue..];
//do
cell.data = model
//don't do like this
cell.title = model.title;
cell.abc = model.abc