重新排序UITableViewCells(自定义类)。一旦移出屏幕,单元格将重置为默认值

时间:2014-08-13 18:31:18

标签: ios objective-c uitableview

我正在使用Objective-C for iOS开发一个应用程序,其中重新排序单元格是一项必需的功能。

我正在加载plist

中的数据

我不希望用户能够编辑或删除单元格,因此在tableView:editingStyleForRowAtIndexPath,我return UITableViewCellEditingStyleNone

return YES中的tableView:canMoveRowAtIndexPath:

我按如下方式实施tableView:moveRowAtIndexPath:toIndexPath

TableViewCell *cellToMove = self.reorderCells[fromIndexPath.row];

[self.reorderCells removeObjectAtIndex:fromIndexPath.row];

[self.reorderCells insertObject:cellToMove
                        atIndex:toIndexPath.row];

TableViewController.h中,我将self.reorderCells声明为指向NSMutableArray的指针。

然而,在重新排序之后,发生的情况是,在滚动时,单元格离开屏幕并被其默认单元格替换。重新排序完全被忽略。有一次,可能会意外删除/替换一个单元格,并且屏幕上也有两个相同的单元格。

修改

我创建了一个名为TableViewCell的自定义单元类。 self.reorderCells每次tableView:cellForRowAtIndexPath都会添加一个新的单元格对象。所以它只包含TableViewCell s。

提前致谢,

-KodInc

1 个答案:

答案 0 :(得分:0)

移动单元格时,需要编辑数据源中的数据。

例如,假设您有一个名为cellNames的数组,用于确定-cellForRowAtIndexPath中每个单元格的内容。如果tableView:moveRowAtIndexPath:toIndexPath:表示您要将单元格1移动到单元格3,则需要编辑cellNames,以便索引1处的对象转到对象3。