iphone - 如何判断 UITableView 动画何时完成?

标签 iphone uitableview

如何判断 [UITableView setEditing:YESanimated:YES] 何时完成?

我不想提供任何背景信息,因为我想避免任何人给我提供我不感兴趣的解决方法。

我想要的是调用上面的函数,然后在动画完成时调用一个单独的函数。

<小时/>

我编辑了这篇文章以提供上下文和一些解决方法。 本来我设置编辑并立即重新加载表数据。

[tableView setEditing:YES animated:YES];
[tableView reloadData];

问题是表格在动画开始之前重新加载,因此永远看不到动画。

以下是一些不同的解决方法:

[tableView setEditing:YES animated:YES];
[self performSelector:@selector(ReloadTable) withObject:nil afterDelay:1.0];

这可行,但如果我得到的延迟不正确,那么它看起来会很糟糕。所以我需要知道延迟是多少,我可以算出来,但我们不能保证延迟总是相同的。

isEditing = YES;
[tableView reloadData];
[tableView setEditing:YES animated:YES];

这可行,但表格的行为会有所不同,具体取决于我们是否处于编辑模式。所以我必须使用我自己的 isEditing 变量而不是标准的 UITableView.editing。我宁愿不必创建一个新的 bool isEditing 变量。

[tableView setEditing:YES animated:YES];
[tableView insertRowsAtIndexPaths:path withRowAnimation:UITableViewRowAnimationTop];

这几乎工作得很好,但在编辑模式下,第一行应该有 UITableViewCellEditingStyleInsert,而其他行应该有 UITableViewCellEditingStyleDelete。通过上面的代码,编辑样式在添加行之前设置。因此第二行以 UITableViewCellEditingStyleInsert 结束。

最佳答案

[CATransaction begin];
[CATransaction setCompletionBlock: ^{
    // your animation has finished
}];
[tableView setEditing:YES animated:YES];
[CATransaction commit];

请注意,setCompletionBlock 必须位于顶部。

关于iphone - 如何判断 UITableView 动画何时完成?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7198633/

相关文章:

iphone - 从 UIViewController 返回 NSString

ios - 如何使用 iphone 使用蓝牙或 wifi 与 OBD II 通信

iphone - ios : create NavigationBar programmatically, 但无法设置标题

ios - 如何在 Objective c 中处理 TableviewCell 中的 UIButton?

ios - 在动态 UITableView 原型(prototype)中访问行高

swift - 删除单元格时无法访问 textLabel 值

ios - 在 IOS App 更新中更改 Bundle 标识符

iphone - 将 UITextField 添加到 UITableViewCell

ios - 在 .xib 中使用自动布局时出现奇怪的动画行为

ios - UITableViewCellContentView 高度怎么可能不同于 heightForRowAtIndexPath :