【发布时间】:2013-10-28 18:33:19
【问题描述】:
总结: 在编辑模式下,我使用自定义编辑控件删除表格视图中的行,而不是默认的红色减号和删除确认按钮。勾选一行或多行,然后点击工具栏中的删除按钮。它类似于在邮件应用程序中看到的行为。请参阅下面的屏幕截图。
问题:
调用deleteRowsAtIndexPaths:withRowAnimation: 生成的动画是不规则的。例如,当我使用底行动画(即UITableViewRowAnimationBottom)删除屏幕截图中勾选的行(主题#7)时,会发生以下情况:
- 主题 #8 在主题 #7 的下方和后面
- 主题 #8 短暂隐藏在主题 #7 后面
- 主题 #8 不和谐地替换主题 #7
这在模拟器和设备上都会发生。自动动画类型(即UITableViewRowAnimationAutomatic)在删除上面的主题 #7 时会产生相同的不规则行为。
Top 动画类型在模拟器中按预期工作,但在设备上产生不一致、不和谐的动画。
Fade 类型的动画是唯一在模拟器和设备上都能按预期工作的动画。
详情:
我的目标是 iOS 7,并使用故事板、纯自动布局和 Core Data。
这是我删除行的操作方法:
- (void)deleteButtonTapped:(UIBarButton *)sender
{
// update table view's data
[self.listOfItems removeObjectsAtIndexes:self.indexSetOfTickedRows];
// create index paths for ticked rows
NSMutableArray *indexPaths = [[NSMutableArray alloc] init];
[self.indexSetOfTickedRows enumerateIndexesUsingBlock:^(NSUInteger idx, BOOL *stop) {
[indexPaths addObject:[NSIndexPath indexPathForRow:idx inSection:0]];
}];
[self.tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationBottom];
// update Core Data and UI...
}
我尝试过的:
表格单元子类覆盖layoutSubviews。但是,即使我注释掉layoutSubviews,不规则动画仍然存在。
我还从表格单元格中删除了自定义可勾选编辑控件,然后在操作方法中硬编码删除特定行。不规则的动画持续存在。
根据其他人的建议,我尝试在调用 beginUpdates 和 endUpdates 之间调用 deleteRowsAtIndexPaths:withRowAnimation:。这不能解决问题。
关于下一步该做什么的任何建议,或者关于我为什么会看到这些不规则动画的最佳猜测?
更新(iOS 7.1):
针对 iOS 7.1 后问题仍然存在。将继续依赖淡入淡出动画。
【问题讨论】:
-
我遇到了类似的问题,我得到了奇怪的动画,其中分隔线向一个方向移动,而单元格内容向另一个方向移动。我再次使用纯自动布局和 iOS7。对我来说似乎有问题。
-
当线程未正确完成时,我已经看到了这种行为。那将是我首先要看的地方。
-
您不需要致电
begin和end更新吗? -
我有同样的问题有什么解决办法吗?
-
哇,你有一个漂亮的界面@bilo.. 我知道这不是主题,但你能否分享一些关于你如何能够做到以下几点的资源:1)有一个可爱的黑色刻度图标,最好是图像源或其他东西; 2)您如何能够在每个单元格的右侧设置编辑选择选项,以便在其左侧显示一条漂亮的线条?而且,3)你是如何在底部创建那个漂亮的栏的,我假设每次你选择另一个单元格时都会自动更新,是使用工具栏和 didSelect 委托方法吗?也许你可以给我发电子邮件
标签: ios animation uitableview ios7