移动它们后重新编号单元格

时间:2014-04-10 00:10:29

标签: ios objective-c uitableview

我有一堆单元格,所有单元格都有一个显示其行的标签。当我在表格中移动单元格时,我希望单元格根据新行重新编号。尝试下面的代码后,数字全部关闭。我该如何解决这个问题?

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{



    for (int section = 0; section < [tableView numberOfSections]; section++) {
        for (int row = 0; row < [tableView numberOfRowsInSection:section]; row++) {
            NSIndexPath* cellPath = [NSIndexPath indexPathForRow:row inSection:section];
            CustomCell* cell = (CustomCell *)[tableView cellForRowAtIndexPath:cellPath];

            NSString *rowString1 = [NSString stringWithFormat:@"%d.", row + 1];
            cell.periodLabel.text = rowString1;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

让模特 - 视图 - 控制器成为你的朋友。

不要考虑“重新编号单元格”,而是“重新编号对象”。使用Model对象(比如MyNumberedRow)来表示单元格中的数据。当单元格移动时,检索该单元格的MyNumberedRow实例,更新该实例。

即使您的逻辑表中有数百个项目,您也只能看到其中一些项目被视为CustomCell个实例。如果它不在屏幕上,则该单元格将不存在。

附注:使用NSInteger,而不是int。它避免了32/64位转换中的类型问题。它也是-numberOfSections的返回类型。