从已存储的数据管理tableview单元格

时间:2014-06-01 17:59:12

标签: ios objective-c uitableview nsuserdefaults

您好我正在尝试制作包含5个单元格的表视图,并且每个单元格都会自动填充我存储的数据或数据类型。这是我想到的一个例子,如果我的问题不够明确,请告诉我 欢呼声。

也许我以错误的方式问我的问题,我会试着解释一下。 所以我正在制作的应用程序以这种方式工作: 我有5种不同的Drill类型,每种类型都有不同的条件,我需要为每种钻取类型制作不同的钻取记录统计数据(UI)和tableView, 因此,在调用Drills的第一个表视图中,我有一个单元格,该单元格应显示用户所做的钻取类型和日期,还有一个创建钻取按钮,用于创建钻取(UI),其中包含一些属性,例如名称,日期和DrillType(只有5个选项), 在此之后,我必须为每种钻孔类型制作5个不同的表和scoringViewControl,特别是它们能够根据需要多次插入其统计数据。 在这里我有问题,我不知道管理导航我的单元格到正确[drilltype] tableview的最佳方法是什么。 (如果我没有必要在创建钻孔中有一些条件,我会制作5个静力单元格并将它们导航到不同的方向)

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{
    if([self.drill.drillType  isEqual: @"Grouping"] ){

    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

    Drill *drill = [self.fetchedResultsController objectAtIndexPath:indexPath];
    cell.textLabel.text = drill.drillType;
    cell.detailTextLabel.text = drill.drillDate;

    return cell;
    }
    else if([self.drill.drillType  isEqual: @"Normal"] ){

        static NSString *CellIdentifier = @"Cell2";
        UITableViewCell *cell2 = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];

        Drill *drill = [self.fetchedResultsController objectAtIndexPath:indexPath];
        cell2.textLabel.text = drill.drillType;
        cell2.detailTextLabel.text = drill.drillDate;

        return cell2;

    }
    return 0;
}

1 个答案:

答案 0 :(得分:0)

如果您需要拥有多个单元格,则应使用动态分派。使用字典将单元格类型映射到键(if语句)。这是代码

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  NSDictionary *cellIds = @{@"Grouping" : @"GroupingCellId", @"Normal" : @"NormalCellId"};

  Drill *drill = [self.fetchedResultsController objectAtIndexPath:indexPath];
  NSString *CellIdentifier = cellIds[drill.drillType];

  UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
  [self configureCell:cell withObject:drill];

  return cell;
}

此外,如果您需要为单元格执行某些特定配置,您可以通过两种方式执行此操作:

1 - 对UITableViewCell进行子类化并实现进行单元配置的方法。不同的单元格将以不同的方式实现此方法。这项技术被称为" Polymorphism"。 Some explanation

  [cell setDrill:drill]  

2 - 根据它的类型进行动态调度(调用方法)。与为不同类型获得不同细胞相同的技术缺口。

NSDictionary *configMethods = @{@"Grouping" : @"configGrouping", @"Normal" : @"configNormal"};
NSString *method = configMethods[drill.drillType];
[self performSelector:NSSelectorFromString(method) withObject:cell withObject:drill];