如何判断cellForRowAtIndexPath中是否插入或重新加载了单元格?

时间:2013-01-17 19:59:30

标签: iphone ios objective-c

我需要为已插入的单元格设置与重新加载的单元格不同的样式。

我按照以下方式插入我的单元格:

[tempArray addObject:[NSIndexPath indexPathForRow:0 inSection:0]];
[[self tableView] beginUpdates];
[[self tableView] insertSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationTop];
[[self tableView] insertRowsAtIndexPaths:(NSArray *)tempArray withRowAnimation:UITableViewRowAnimationNone];
[[self tableView] endUpdates];

我有办法做以下事情:

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

    if (cell was inserted) {
      cell.mylabel.textColor = [UIColor redColor];
    } else {
      cell.mylabel.textColor = [UIColor blackColor];
    }

}

1 个答案:

答案 0 :(得分:2)

通常情况下,维护表格视图单元格的状态,正确的答案是保持模型中的状态。换句话说,如果tempArray是包含描述表内容的对象集合的模型,则向这些对象添加BOOL属性,类似userAdded

然后您的“单元格被插入”伪代码可以变为:

MyModelClass *modelElement = [tempArray objectAtIndex:indexPath.row];

if (modelElement.userAdded) {
    cell.mylabel.textColor = [UIColor redColor];
} else {
  cell.mylabel.textColor = [UIColor blackColor];
}