如果行数据与上一行匹配,则对UITableView中的行进行编号并复制行号

时间:2012-11-16 08:44:52

标签: ios uitableview

一直坚持这个(初学者)问题所以现在请求帮助:)

在我的UITableView中,我显示的行包含以下行:1)行#,2)一个人的姓名,以及3)他们的分数。

它看起来像这样:

1. David     100
2. Arron     92
3. Cindy     90
4. Gina      85
5. Harry     85
6. Daniel    82
...

我在UITableView中使用此代码生成此代码:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [tableView
                             dequeueReusableCellWithIdentifier:@"PersonCell"];

    cell.textLabel.text = [NSString stringWithFormat:@"%d. %@", indexPath.row+1,[topPersons objectAtIndex:indexPath.row]];
    cell.detailTextLabel.text = [[topPersonsScore objectAtIndex:indexPath.row] stringValue];

    return cell;
}

但是,我试图通过复制行#来考虑绑定分数,例如:

1. David     100
2. Arron     92
3. Cindy     90
4T. Gina     85
4T. Harry    85
6. Daniel    82
...

所以Gina和Harry现在并列第4名,而不是4和5,尽管他们的成绩相同。

我可以用cellForRowtIndexPath方法做些什么吗?或者我应该使用另一种方法更新我的topPersons NSMutableArray以将行#/ rank作为此人姓名的一部分进行更新?

任何帮助将不胜感激 - 谢谢!

1 个答案:

答案 0 :(得分:2)

我不会滥用该类逻辑的单元格视图或表格视图。我宁愿用另一种方法计算排名,并将排名添加到topPerson的对象中。

不以任何特定顺序调用cellForRowAtIndexPath。也没有以任何特定顺序调用任何单元格视图的方法。这使得执行这样的计算变得困难。

您当然可以确定(indexPath.row-1)topPersons对象是否具有相同的值,并且在这种情况下确定(indexPath.row-2)topPersons对象是否也具有相同的值,在这种情况下确定(indexPath.row.2)th topPersons ......等等。但我不建议这样做。