8

如何在 UITableview 的动画完成后采取行动?

我正在尝试缩小 UITableview 单元格并删除缩小后不可见的单元格子视图。为了缩小单元格,我调用 [tableview beginUpdates] 和 [tableview endUpdates],并更改 UITableview 的heightForRowAtIndexPath 数据源方法返回的单元格高度。

挑战是,我需要 tableview 完成收缩,以便在我可以删除子视图之前子视图是看不见的。如果我在调用 [tableview endUpdates] 之后(或之前或之间)将代码从单元格中删除子视图,那么子视图被删除得太快(它不等待动画)并且看起来很有趣。

我的想法是我希望能够设置一个在动画完成后运行的回调,并删除回调中的 subView

4

2 回答 2

19

那这个呢?

[CATransaction begin];

[CATransaction setCompletionBlock:^{
    // animation has finished
}];

[tableView beginUpdates];
// shrink the cells
[tableView endUpdates];

[CATransaction commit];
于 2013-01-31T18:23:30.463 回答
-4

尝试使用 NSNotifications 类。在即将发生某事时发布通知,稍后在某事发生后发布。您可以在相同的通知方法中使用布尔值在“即将发生”和“已经发生”之间切换。

于 2011-06-08T07:41:06.153 回答