3

在我的 UITableView 实例中,我将单元格移动到 index:0 并重新加载数据。问题是单元格“捕捉”到顶部(我认为是由于 reloadData)。我想知道我是否可以将单元格向上移动,然后在几秒钟后应用 reloadData。这是我的代码:

[_toDoItems removeObject:todoItem];

[_toDoItems insertObject:todoItem atIndex:0 ];





[self.tableView beginUpdates];

[self.tableView moveRowAtIndexPath:origIndexPath toIndexPath:0];

[self.tableView endUpdates];

sleep(1);
[self.tableView reloadData];

这样做的问题是,在调用该方法后,一切都会暂停 1 秒钟,然后出现“快照”动画。

4

3 回答 3

1

你首先告诉 tableView 期待更新beginUpdates。然后更新相关部分(如果您的 tableView 只有一个部分,则只需为部分编号传递零)。在这里您可以指定动画 - 您可以使用它来获得您想要的效果。之后,您调用endUpdatestableView。typedef forUITableViewRowAnimation指定:

typedef enum {
   UITableViewRowAnimationFade,
   UITableViewRowAnimationRight,
   UITableViewRowAnimationLeft,
   UITableViewRowAnimationTop,
   UITableViewRowAnimationBottom,
   UITableViewRowAnimationNone,
   UITableViewRowAnimationMiddle,
   UITableViewRowAnimationAutomatic = 100
} UITableViewRowAnimation;

到处玩,看看你想要哪一个。即使选择UITableViewRowAnimationNone有时也会产生很好的效果。根据您可以使用的部分数量- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation

表更新代码如下:

[self.tableView beginUpdates];
[self.tableView reloadSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];
于 2013-08-05T14:56:19.517 回答
1

解决了。

     [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(briefPause) userInfo:nil repeats:NO];

我以与上述相同的方法使用了上述内容

[self.tableView beginUpdates]
....

但我做了一个新功能,briefPause,它只是:

    [self.tableView reloadData];
于 2013-08-05T20:19:41.567 回答
0

尝试这个:

[self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:origIndexPath
                                                       inSection:0]]
                 withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView insertRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:0
                                                       inSection:0]]
                 withRowAnimation:UITableViewRowAnimationAutomatic];
[self.tableView endUpdates];
于 2013-08-05T15:03:16.823 回答