2个NSArray在UITableView中用于动画插入/删除的区别

Ale*_*hen 8 animation cocoa-touch uitableview nsarray

在我的应用程序中的某个时刻,我有一个NSArray,其内容发生了变化.这些内容显示在UITableView中.我试图找到一种方法来找到NSArray之前和之后的内容之间的差异,这样我就可以将正确的indexPaths传递给insertRowsAtIndexPaths:withRowAnimation:和deleteRowsAtIndexPaths:withRowAnimation:以便更改动画.有任何想法吗?

谢谢

Ale*_*hen 5

这是我试过的wat,它似乎有用,如果有人有更好的东西,我很乐意看到它.

[self.tableView beginUpdates];

NSMutableArray* rowsToDelete = [NSMutableArray array];
NSMutableArray* rowsToInsert = [NSMutableArray array];

for ( NSInteger i = 0; i < oldEntries.count; i++ )
{
    FDEntry* entry = [oldEntries objectAtIndex:i];
    if ( ! [displayEntries containsObject:entry] )
        [rowsToDelete addObject: [NSIndexPath indexPathForRow:i inSection:0]];
}

for ( NSInteger i = 0; i < displayEntries.count; i++ )
{
    FDEntry* entry = [displayEntries objectAtIndex:i];
    if ( ! [oldEntries containsObject:entry] )
    [rowsToInsert addObject: [NSIndexPath indexPathForRow:i inSection:0]];
}

[self.tableView deleteRowsAtIndexPaths:rowsToDelete withRowAnimation:UITableViewRowAnimationFade];
[self.tableView insertRowsAtIndexPaths:rowsToInsert withRowAnimation:UITableViewRowAnimationRight];

[self.tableView endUpdates];
Run Code Online (Sandbox Code Playgroud)