您好我正在尝试制作包含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;
}
答案 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];