我正在使用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
答案 0 :(得分:0)
移动单元格时,需要编辑数据源中的数据。
例如,假设您有一个名为cellNames
的数组,用于确定-cellForRowAtIndexPath
中每个单元格的内容。如果tableView:moveRowAtIndexPath:toIndexPath:
表示您要将单元格1移动到单元格3,则需要编辑cellNames
,以便索引1处的对象转到对象3。