如何创建新的部分并使用动画将行移动到它

时间:2022-03-02 14:29:32

I have this code in tableviewdidSelectRow :

我在tableviewdidSelectRow中有这个代码:

[tableView beginUpdates];
[tableView insertSections:[NSIndexSet indexSetWithIndex:tableView.numberOfSections] withRowAnimation:UITableViewRowAnimationFade];
[tableView moveRowAtIndexPath:indexPath toIndexPath:[NSIndexPath indexPathForRow:0 inSection:tableView.numberOfSections ]];
[tableView endUpdates];

After endUpdates I'm getting crash with:

在endUpdates之后我崩溃了:

cannot move a row into a newly inserted section

无法将行移动到新插入的部分中

Where is my mistake? How to create new section and move row to it with animation so ?

我的错误在哪里?如何使用动画创建新的部分并将行移动到它?

1 个解决方案

#1


0  

It is better late, than never, for next generation, my solution was to use deleteRow + insertRow instead of moveRow..., like this code:

对于下一代来说,最好是迟到,而不是永远,我的解决方案是使用deleteRow + insertRow而不是moveRow ...,就像这段代码:

[self.tableView beginUpdates];

[self.tableView insertSections:[NSIndexSet indexSetWithIndex:newSectionNum]
                      withRowAnimation:UITableViewRowAnimationNone];

[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:oldIndexPath]
                          withRowAnimation:UITableViewRowAnimationNone];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath]
                          withRowAnimation:UITableViewRowAnimationNone];

[self.tableView endUpdates];

#1


0  

It is better late, than never, for next generation, my solution was to use deleteRow + insertRow instead of moveRow..., like this code:

对于下一代来说,最好是迟到,而不是永远,我的解决方案是使用deleteRow + insertRow而不是moveRow ...,就像这段代码:

[self.tableView beginUpdates];

[self.tableView insertSections:[NSIndexSet indexSetWithIndex:newSectionNum]
                      withRowAnimation:UITableViewRowAnimationNone];

[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:oldIndexPath]
                          withRowAnimation:UITableViewRowAnimationNone];
[self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath]
                          withRowAnimation:UITableViewRowAnimationNone];

[self.tableView endUpdates];