是否存在一个委托协议,其中包含对UITableView动画更改结束的回调?特别是reloadSection / Rows?
答案 0 :(得分:4)
实际上, DOES 似乎是一种做到这一点的方式(虽然不像它应该的那样简单!)。
虽然没有直接访问某种类型的回调,但UITableView
动画似乎发生在CAAnimation
内。因此,只需访问completionBlock
的{{1}}似乎就可以满足您的需求。
以下是我在CAAnimation
子类中链接2个动画的方法:
UITableView
#pragma mark - Section expanding/collapsing
- (void)toggleSection:(NSInteger)index {
int expandedSection = [self ExpandedSection];
if (expandedSection != NO_EXPANDED_SECTIONS_INDEX) {
[self beginUpdates];
[self collapseSection:@(expandedSection)];
[CATransaction setCompletionBlock:^{
if (expandedSection != index) {
[self beginUpdates];
[self expandSection:@(index)];
[self endUpdates];
}
}];
[self endUpdates];
} else {
[self expandSection:@(index)];
}
}
和collapseSection:
方法中的代码只是添加/删除需要折叠或展开的子部分。不过,关键在于,在使用此代码时,我终于可以折叠一个子部分 然后 展开下一个子部分。之前,两个动画同时发生,这在视觉上没有吸引力。
我希望这会对你有所帮助!我挣扎了很长时间,把头撞到了墙上,直到找到了它。
这是针对iOS 6.0编写的。我也非常希望将来某个版本能够解决这个问题/黑客攻击!
答案 1 :(得分:1)
这不是你想听的答案,但没有* :(
表格视图的委托仅回复these methods。
然而,(这有点像黑客但是)动画大约0.35秒,你可以打电话给performSelector:withObject:afterdelay:。 。
*至少不是我所知道的。 。