我有一堆单元格,所有单元格都有一个显示其行的标签。当我在表格中移动单元格时,我希望单元格根据新行重新编号。尝试下面的代码后,数字全部关闭。我该如何解决这个问题?
- (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;
}
}
}
答案 0 :(得分:0)
让模特 - 视图 - 控制器成为你的朋友。
不要考虑“重新编号单元格”,而是“重新编号对象”。使用Model对象(比如MyNumberedRow
)来表示单元格中的数据。当单元格移动时,检索该单元格的MyNumberedRow
实例,更新该实例。
即使您的逻辑表中有数百个项目,您也只能看到其中一些项目被视为CustomCell
个实例。如果它不在屏幕上,则该单元格将不存在。
附注:使用NSInteger
,而不是int
。它避免了32/64位转换中的类型问题。它也是-numberOfSections
的返回类型。